首先是不明白``随机数函数````的原理``
第2是``完全用不来随机数函数``
----------------解决方案--------------------------------------------------------
哈哈,真的假的呀,版主?
----------------解决方案--------------------------------------------------------
回复 4# 的帖子
能不能把这道题的意思说详细一下,实在有点迷茫,看不懂 ----------------解决方案--------------------------------------------------------
回复 5# 的帖子
同意你的 以前用过你的思想 做过类似的统计 ----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, j;
int ar[10] = {0};
for(i = 0; i < 10; ++i) // 10个不同的种子
{
srand((unsigned int)(i + 1)); // 设定种子
for(j = 0; j < 10; ++j)
ar[j] = 0; // 初始化统计数组
for(j = 0; j < 1000; ++j) // 产生1000个1到10范围内的随机数,
++ar[rand() % 10]; // 并统计出现次数
for(j = 0; j < 10; ++j) // 打印产生的随机数的次数
printf("%4d ", ar[j]);
putchar('\n');
}
getchar();
return 0;
}
[[italic] 本帖最后由 cosdos 于 2007-12-30 12:36 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
回复15#
你是循环10次,把0-9按顺序当成种子,让它产生随机数的。
如果只能用srand((unsigned)time(NULL));采用系统时钟。这个题怎么样去算呢!
----------------解决方案--------------------------------------------------------
有一个地方的注释标错了,现在修改,并使用了 time()
time() ,其实和上面的代码一样。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, j;
int ar[10] = {0};
for(i = 0; i < 10; ++i) // 10个不同的种子
{
srand((unsigned int)time(NULL)); // 设定种子,使用了 time()
for(j = 0; j < 10; ++j)
ar[j] = 0; // 初始化统计数组
for(j = 0; j < 1000; ++j) // 产生1000个1到10范围内的随机数,
++ar[rand() % 10]; // 并统计出现次数
for(j = 0; j < 10; ++j) // 打印产生的随机数的次数
printf("%4d ", ar[j]);
putchar('\n');
}
getchar();
return 0;
}
----------------解决方案--------------------------------------------------------
哎````晕````
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]cosdos[/underline][/bold] 于 2007-12-30 12:39 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1165721&ptid=193943][/url]
有一个地方的注释标错了,现在修改,并使用了 time()
time() ,其实和上面的代码一样。
#include
#include
#include
int main(void)
{
int i, j;
int ar[10] = {0};
for(i = 0; i < 10; ++i) ...
有一个地方的注释标错了,现在修改,并使用了 time()
time() ,其实和上面的代码一样。
#include
#include
#include
int main(void)
{
int i, j;
int ar[10] = {0};
for(i = 0; i < 10; ++i) ...
这样的话,随机数会不会大多数都一样呀,因为在同一时间,比如一秒,它产生的是同一个数呀,也就是同一个种子呀!
----------------解决方案--------------------------------------------------------
正如我说的一样呀,看看你的程序的结果呀:
针对 17# 的结果:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, j;
int ar[10] = {0};
for(i = 0; i < 10; ++i) // 10个不同的种子
{
srand((unsigned int)time(NULL));// 设定种子,使用了 time()
printf("%-2d:",i+1); //此外在这里加了一条语句,为了看得清楚。
for(j = 0; j < 10; ++j)
ar[j] = 0; // 初始化统计数组
for(j = 0; j < 1000; ++j) // 产生1000个1到10范围内的随机数,
++ar[rand() % 10]; // 并统计出现次数
for(j = 0; j < 10; ++j) // 打印产生的随机数的次数
printf("%4d ", ar[j]);
putchar('\n');
}
getchar();
return 0;
}
----------------解决方案--------------------------------------------------------