您的位置:首页 > 其它

随机函数的问题

2014-04-18 10:38 127 查看
题目:设rand(s,t)返回[s,t]之间的随机小数,利用该函数在一个半径为R的圆内找随机n个点,并给出时间复杂度分析。

解析:要在圆内随机选择一个点,那么选择这个点的概率一定是1/πR^2,

应该用两次随机变化:

这个使用数学中的极坐标来解决,先调用[s1,t1]随机产生一个数r,归一化后乘以半径,得到R*(r-s1)/(t1-s1);

然后在调用[s2,t2]随机产生一个数a,归一化后得到角度 2π *(a-s2)/(t2-s2)

题目:

下面的程序可以从1....n中随机输出m个不重复的数

knuth(int n, int m)

{

srand((unsigned int)time(0));

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

{

if ( )

{

cout<<i<<endl;

;

}

}

}1、rand()%(n-i) < m
2、m--
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: