C言語なら俺に聞け(入門編)Part 124
■ このスレッドは過去ログ倉庫に格納されています
0098デフォルトの名無しさん
2014/01/09(木) 18:51:28.20#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);
■ このスレッドは過去ログ倉庫に格納されています