1

尽管只设置了 srand()一次,正如关于 rand() 的类似 Q/A 所指出的那样,
我认为以下 rand 不会为我的自定义随机函数返回值。

无论如何,我的目的是生成一些随机数
,并在它们出现后立即在数组中计数 +1(稍后计算它们的频率)

一个表示(5x)+1 at freq[] 数组

我已阅读有关 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;
}
4

2 回答 2

3

你的问题是这样的:

for(i=0;i<N;i++)
 number=RandomInteger(1,9);

它应该有

for(i=0;i<N;i++) {
 number=RandomInteger(1,9);
..
..
}

switch否则它会运行 N 次(同一行),但在完成循环之前永远不会去

于 2013-12-30T18:42:35.493 回答
2

在您的代码中,high 设置为 1,low 设置为 9,这将导致负 k。退货将超出您的案件范围,并将属于违约。

于 2013-12-30T18:39:31.570 回答