我完成了整个代码,用户可以选择两个骰子中的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
所以我还在学习。提前谢谢!
编辑:我需要使用数组来计算每个号码的频率?我有时会发现人们做类似的事情,但它的编程技术要比我知道如何使用或者我的导师会接受。
答案 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