骰子滚动模拟器 - 直方图内每个滚动的输出频率

时间:2014-10-28 01:46:25

标签: c frequency dice

我完成了整个代码,用户可以选择两个骰子中的number of sides total number of rolls,并打印histogram of the values rolled。我无法弄清楚如何使每个值的frequency出现在各自数字旁边的直方图中。我有我认为的所有相关代码,如果不是我会添加更多。我浏览了这个网站,发现主要是matlab code

 case 2:
     printf("\nEnter number of trials: ");
     fgets(runinput, sizeof(runinput), stdin);
     sscanf(runinput,"%d",&n);
     if (n > nmax){
         printf("Your choice of %d has exceeded the max value of trials. Value set to max of %d.",n,nmax);
         n = nmax;
         printf("\nRolling dice...");
         tried++;
     }
     else{
         printf("\nRolling dice...");
     }
     for (i=0; i <= s; i++){
         a[i] = 0;
     }
     for (i=0; i <=n-1 ; i++){
         d1 = rand()%s;
         d2 = rand()%s;
         result = d1+d2;
         x = random()%(2*s-1);
         a[result]++;
         results[i] = a;
     }
     break;
 case 3:
     if (tried != 0){
         printf("\nPrinting histogram...\n");
         for (i=0; i <= 2*s-2; i++){
             freq = results[i];
             printf("%5i|  %10i  - ", i+2, freq);
             for (j=0; j < a[i]+2; j++){
                 while (a[i] > 0){
                     if (a[i] >= 100){
                         printf("X");
                         a[i]=a[i]-100;
                     }
                     else if (a[i]>=10){
                         printf("x");
                         a[i]=a[i]-10;
                     }
                     else {
                         printf("*");
                         a[i]=a[i]-1;
                     }
                  }
              }
              printf("\n");
          }
      puts("X = 100, x = 10, * = 1\n");
      break;

我想要添加的是直方图中每个数字出现的频率,任何帮助和解释都很受欢迎,我只在CS239所以我还在学习。提前谢谢!

编辑:我需要使用数组来计算每个号码的频率?我有时会发现人们做类似的事情,但它的编程技术要比我知道如何使用或者我的导师会接受。

1 个答案:

答案 0 :(得分:0)

将所有结果保存在单个数组中,然后遍历数组。在一天结束时,您将获得另一个数组,您也可以遍历它以打印任何值。

$array = [1, 6, 6, 6, 8, 9, 0,];
$counter = [];

foreach ($array as $value) {
   $counter[$value] ++;
}

print_r($counter);

第二个数组的每个 $ counter )具有骰子掷骰的值,并且该键的 $ value 具有频率。

编辑(错误的语言): 好吧,我写了PHP而不是C;对不起:(

您可以尝试一些接近原始想法的内容,您可以查看有关如何Iterate through a C array的帖子,然后只需添加一个数字,当您在新数组中找到重复的数字时,瞧!

我希望这会有所帮助,再一次关于弄乱语言:P