当前位置: 代码迷 >> C语言 >> [讨论]有关rand()生成数的大小..
  详细解决方案

[讨论]有关rand()生成数的大小..

热度:176   发布时间:2007-11-03 23:23:43.0

//------- 失误 ,因为因为数据刷新了 -------------//

[此贴子已经被作者于2007-11-4 1:26:15编辑过]


----------------解决方案--------------------------------------------------------
回复:(cosdos)// 回楼上#include #...

先生没看懂我在说什么吧?


----------------解决方案--------------------------------------------------------

因帖子列表刷新,失误


----------------解决方案--------------------------------------------------------

把2个16位随机数的位拼接为一个32位的可以产生32bit随机数。

产生32个 rand % 2 的数,也可以实现32bit随机数。




[此贴子已经被作者于2007-11-4 2:10:45编辑过]


----------------解决方案--------------------------------------------------------
谢谢大家的提示
----------------解决方案--------------------------------------------------------
以下是引用leeco在2007-11-3 23:21:10的发言:
又想了想我上面的问法有些错误,X,Y都是离散型随机变量,不是服从均匀分布。
而X*Y的分布没有必要讨论了。
如果按照cosdos的做法,(RAND_MAX,RAND_MAX*RAND_MAX]之间的质数被随机到的可能性是0,原因很简单一个质数不可能被分解成两个数的乘积的形式,所以这种做法确实是欠妥的。

这位同学,假如要得到质数5,那么5可以分解为1和5,以及5和1的乘积。
只不过随到的可能性要更小而并非为0


----------------解决方案--------------------------------------------------------
以下是引用jackys2006在2007-11-4 19:39:07的发言:

这位同学,假如要得到质数5,那么5可以分解为1和5,以及5和1的乘积。
只不过随到的可能性要更小而并非为0

先生请注意我提到的区间范围。
----------------解决方案--------------------------------------------------------

回复:(leeco)以下是引用jackys2006在2007-11-4 19:...

确实如此,质数(素数)

RAND_MAX 到 RAND_MAX*RAND_MAX 之间的

我只想到 使用位操作 或 数组。(我的编译器不支持64位)
union ran
{
short a16[2];
unsigned int a32;
};

/* 用联合存放2个16位随机数,以实现32位随机数 */

关于产什么32位随机数有什么好的提议吗?

[此贴子已经被作者于2007-11-5 1:00:11编辑过]


----------------解决方案--------------------------------------------------------