当前位置: 代码迷 >> C语言 >> 随机数问题。。。
  详细解决方案

随机数问题。。。

热度:406   发布时间:2007-11-03 21:25:20.0
随机数问题。。。

表头文件: #include<stdlib.h>定义函数 :int rand(void)函数说明 :因为rand的内部实现是用线性同

余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,

rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()

设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。rand()产生的是假

随机数字,每次执行时是相同的。若要不同,以不同的值来初始化它.初始化的函数就是srand()。返回

值:返回0至RAND_MAX之间的随机整数值,RAND_MAX的范围最少是在32767之间(int),即双字节(16位

数)。若用unsigned int 双字节是65535,四字节是4294967295的整数范围。0~RAND_MAX每个数字被选

中的机率是相同的。
我的问题是如何生成unsigned int 或是四字节的随机数。。。
还有一个问题 我用下面的两个函数生成随机数。。它们是相同的。。是顺序执行。。都是以时间作为随机种子。
generate(T);
generate(R);
可能是程序短,执行快。。生成的两个随机数是相同的。。可我现在想生成两个1024bit的随机数。要不同的。。谁能帮我想想办法啊(我的1024位是32歌32bit拼起来的,算不算合格啊)

搜索更多相关的解决方案: 随机数  rand  函数  MAX  定义  

----------------解决方案--------------------------------------------------------
生成 unsigned int

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

r = (unsigned int)rand() * (unsigned int)rand();

如果不行,那就

unsigned int r;
unsigned int r1;
unsigned int r2;
srand((unsigned int)time(0));

r1 = rand();
r2 = rand();
r = r1 * r2;



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

//-------------- unsigned int ---------------//

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
unsigned int r;
srand((unsigned int)time(0));

while(getchar() != 'q')
{
r = (unsigned int)rand() * (unsigned int)rand(); /* 这个方法并不是很好 */
printf("%u\n", r);
}

getchar();
return 0;
}

[此贴子已经被作者于2007-11-4 11:54:05编辑过]


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

while(getchar() != 'q')
{
r = (unsigned int)rand() * (unsigned int)rand();
printf("%u\n", r);
}
这两个rand()生成的随机数,有甚么关系吗?它们是使用的相同的随机种子吗


----------------解决方案--------------------------------------------------------
int _tmain(int argc, _TCHAR* argv[])
{ unsigned int R[32],T[32];
generate(T);
generate(R);
getch();
return 0;
}
这样生成的是两个1024位的数。。它们为甚么是相同的啊。。怎么可以解决下啊
----------------解决方案--------------------------------------------------------
generate() 是随机数函数吗?
----------------解决方案--------------------------------------------------------
回复:(可见光)int _tmain(int argc, _TCHAR* argv[...
T[32]
generate(); 是什么函数?

generate(T); 按你写的代码,这个函数接受的是一个int数组首元素的地址。


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

随机数 除以一个大质数就可以得到任意程度的随机数

只要你有足够的存储空间 和足够大的质数


----------------解决方案--------------------------------------------------------
  相关解决方案