NORSYS SOFTWARE © 2012 | NETICA API | C   VERSION   5.04  |
int GenerateRandomCase_bn ( | const nodelist_bn* nodes, sampling_bn method, double timeout, randgen_ns* rand ) |
Generates a random case for nodes (i.e., positive findings for each of them), by sampling from a probability distribution matching that of the net containing nodes, and conditioned on all findings already entered in the net. Returns 0 or greater if it was successful, otherwise negative.
If method is JOIN_TREE_SAMPLING, then the net must be compiled, and the junction tree is used to do very fast sampling with no rejections (i.e., findings don't slow it down).
If method is FORWARD_SAMPLING, then forward sampling is used. This evaluates equations directly if they are available, rather than just using CPT entries (which may just approximate the equation). However, it uses a rejection method, so it may be very slow if the findings currently entered are improbable.
If method is DEFAULT_SAMPLING (the recommended value), then the default method is used. Currently this is method FORWARD_SAMPLING if rejections won't be a problem or the net is uncompiled, otherwise method JOIN_TREE_SAMPLING.
timeout indicates how much time to allocate for the task (in relative units). If it cannot finish in time, it will return a negative quantity (no Netica error will be generated). If method is JOIN_TREE_SAMPLING, or no findings are entered, then it always returns successfully, and within a fixed amount of time, so then timeout is ignored.
For rand you can pass an object created by NewRandomGenerator_ns to control the pseudo-random number sequence. It has the same effect effect as associating rand to the net with SetNetRandomGen_bn; see that function for more info.
Uses the randgen_ns rand passed to it to generate the case. If NULL is passed, it uses the randgen_ns associated with the net by SetNetRandomGen_bn. If there is no randgen_ns associated with the net, it uses Netica's internal global randgen_ns (which is slightly slower due to the required mutex protection).
WARNING:: Be sure to remove unwanted findings first (e.g., with RetractNetFindings_bn), otherwise it will take them into account. For example, if you call this function multiple times without retracting between, the node findings will not change.
Version:
See also:
GetNodeFinding_bn | Retrieve the random value generated | |
GetNodeValueEntered_bn | Retrieve the random value generated for a continuous node | |
NewNodeList2_bn | Create the node list | |
RetractNetFindings_bn | Probably want to call this first | |
NewRandomGenerator_ns | To control the sequence of cases produced |
Example:
See NewRandomGenerator_ns