生成随机数

来源:互联网 发布:烘焙食谱软件 编辑:程序博客网 时间:2024/05/22 13:41

1. 已有一个随机数发生器,生成0的概率是p,生成1的概率是1-p。如何利用该发生器制作一个1~n的概率都是1/n的发生器。

1> 1,2   00,01,10,11    01和10都是 p(1-p)

2>1,2,3  100,001,010   p*p*(1-p)

2. 已知有rand7()的函数,返回1到7随机自然数。利用rand7()构造rand10()随机数1~10

    (rand7()-1)*7+rand7()   1> 砍掉11-49   2> 砍掉41-49,把1-40映射到1-10

3. 从1-n 中随机选出m个不重复的数

void select(int n,int m)

{

for(int i=0;i<n;i++)

{

if(rand_n()<m)

{

cout<<I<<endl;

}

}

}

0 0
原创粉丝点击