50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /* DISTRIB.H - Interface to module for handling distributions over numbers. */
 | |
| 
 | |
| /* Copyright (c) 1995-2012 by Radford M. Neal and Peter Junteng Liu.
 | |
|  *
 | |
|  * Permission is granted for anyone to copy, use, modify, and distribute
 | |
|  * these programs and accompanying documents for any purpose, provided
 | |
|  * this copyright notice is retained and prominently displayed, and note
 | |
|  * is made of any changes made to these programs.  These programs and
 | |
|  * documents are distributed without any warranty, express or implied.
 | |
|  * As the programs were written for research purposes only, they have not
 | |
|  * been tested to the degree that would be advisable in any important
 | |
|  * application.  All use of these programs is entirely at the user's own
 | |
|  * risk.
 | |
|  */
 | |
| 
 | |
| 
 | |
| /* DATA STRUCTURES USED TO STORE A DISTRIBUTION LIST.  Entries in the list 
 | |
|  * (distrib_entry) are stored in an array (distrib->list[]). */
 | |
| 
 | |
| typedef struct distrib_entry
 | |
| { int num;			/* A positive number */
 | |
|   double prop;			/* Proportion for this number */
 | |
| } distrib_entry;
 | |
| 
 | |
| typedef struct distrib
 | |
| { struct distrib_entry *list;	/* The list of numbers and proportions */
 | |
|   int size;			/* Number of entries in the list */
 | |
| } distrib;
 | |
| 
 | |
| 
 | |
| /* MACROS TO ACCESS ELEMENTS OF A DISTRIBUTION LIST.  Note that indexes for
 | |
|    entries start at 0. */
 | |
| 
 | |
| #define distrib_num(d,i) \
 | |
|   ((d)->list[i].num)		/* The number for the i'th entry */
 | |
| 
 | |
| #define distrib_prop(d,i) \
 | |
|   ((d)->list[i].prop)		/* The i'th entry's proportion [probability] */
 | |
| 
 | |
| #define distrib_size(d) \
 | |
|   ((d)->size)			/* The length of the list (integer) */
 | |
| 
 | |
| 
 | |
| /* PROCEDURES FOR DISTRIBUTION LISTS. */
 | |
| 
 | |
| distrib *distrib_create	(char *);
 | |
| void distrib_free (distrib *);
 | |
| 
 | |
| int distrib_max(distrib *);
 | 
