| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 611 人关注过本帖
标题:随机数问题。。。
只看楼主 加入收藏
可见光
Rank: 1
等 级:新手上路
帖 子:143
专家分:0
注 册:2007-6-15
收藏
 问题点数:0 回复次数:7 
随机数问题。。。

表头文件: #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 定义 
2007-11-03 21:25
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
生成 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;



—>〉Sun〈<—
2007-11-03 22:35
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 

//-------------- 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编辑过]


—>〉Sun〈<—
2007-11-03 22:44
可见光
Rank: 1
等 级:新手上路
帖 子:143
专家分:0
注 册:2007-6-15
收藏
得分:0 

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

2007-11-04 11:49
可见光
Rank: 1
等 级:新手上路
帖 子:143
专家分:0
注 册:2007-6-15
收藏
得分:0 
int _tmain(int argc, _TCHAR* argv[])
{ unsigned int R[32],T[32];
generate(T);
generate(R);
getch();
return 0;
}
这样生成的是两个1024位的数。。它们为甚么是相同的啊。。怎么可以解决下啊
2007-11-04 11:53
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
generate() 是随机数函数吗?

—>〉Sun〈<—
2007-11-04 11:55
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
回复:(可见光)int _tmain(int argc, _TCHAR* argv[...
T[32]
generate(); 是什么函数?

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


—>〉Sun〈<—
2007-11-04 12:01
作弊
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-11-3
收藏
得分:0 

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

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

2007-11-04 12:06
快速回复:随机数问题。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055724 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved