【发布时间】:2013-12-30 18:28:40
【问题描述】:
尽管设置了 srand() 仅一次,正如关于 rand() 的类似 Q/A 所指出的那样
我认为以下 rand 不会为我的自定义随机函数返回值。
无论如何,我的目的是生成一些随机数
并在它们出现后立即在数组中计数 +1(稍后计算它们的频率)
1 代表 freq[] 数组中的 (5x)+1
我已阅读有关 rand()/srand 的文档,但我无法找出错误。
感谢您的耐心等待!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 1000
int RandomInteger(int low , int high);
main()
{
int freq[9]={0},i,j,number,div;
srand((int)time(NULL));
for(i=0;i<N;i++)
number=RandomInteger(1,9);
switch(number){
case 1:
freq[0]+=1;
break;
case 2:
freq[1]+=1;
break;
case 3:
freq[2]+=1;
break;
case 4:
freq[3]+=1;
break;
case 5:
freq[4]+=1;
break;
case 6:
freq[5]+=1;
break;
case 7:
freq[6]+=1;
break;
case 8:
freq[7]+=1;
break;
case 9:
freq[8]+=1;
break;
default:
;
}
for(i=0;i<9;i++){
div=freq[i]/5;
printf("%d|",div);
for(j=0;j<div;j++)
printf("*");
printf("\n");
}
}
int RandomInteger(int low , int high)
{
int k;
double d;
d=(double)rand()/((double)RAND_MAX+1);
k=(int)(d*(high-low+1));
return low+k;
}
【问题讨论】:
-
打开编译器上的警告。您发布的代码甚至无法编译。
-
为什么你认为它没有返回数字?我可以向你保证确实如此。我认为问题在于您的 for 循环不包含 switch 语句。
-
Turbo c 编译它没有警告
-
不编译也不运行ideone.com/PCEPPy
-
你将高设置为 1,低设置为 9,给你一个 -K
标签: c function random frequency-distribution