- 98 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 18:51:28.20 ]
- >52
#define PRC (1000) typedef struct {unsigned per,val;}prm_t; typedef struct {unsigned spn;prm_t*prm}sed_t; unsigned xrnd(sed_t*a) { if (a->prm);else return rnd()%a->spn; if (a->prm->per&&rnd()%PRC<(unsigned)((double)a->prm->per/a->spn*PRC)) return --a->spn,--a->prm->per,a->prm->val; unsigned r,t=(a->prm++)->val; while ((r=xrnd(a))==t){} return --a->spn,--a->prm,r; } #define SPN (1000) prm_t prm[]={{SPN*0.19,1},{SPN*0.37,2}},*pprm[]={&prm[0],&prm[1],NULL}; sed_t sed={SPN,pprm}; ... if (sed.spn);else sed.spn=SPN,prm[0].per=SPN*0.19,prm[1].per=SPN*0.37; x=xrnd(&sed);
|

|