編集 #3: gcc でコンパイルすると、すべて正常に動作します。clang (バージョン 3.0) を使用すると、0 しか表示されません。比較的単純に思えるので、なぜclangがこれでうまくいかないのか、私はとても混乱しています。
編集 #2: わかりましたので、皆さんのおかげでコードが機能することを確認しましたが、それはおそらく環境です。私はARM Samsung ChromebookのUbuntuでこれらすべてを行っています(実際にはchrootを介して)。すべてをコンパイルするために、clang 3.0 (-o フラグのみ) を使用しています。私はvimですべてを入力しています。これが起こっているのは、私がARMを使用しているからですか?
私はこれを2時間見つめていましたが、間違いを見つけることができません. Float は、何をしても 0.000000 を返すようです。10000.0 で除算して、10000 を float 型と double 型の変数に格納してみました。
1.1 が格納された float 型の変数と printf("%f", variable) のみを持つ小さなプログラムを作成し、0.000000 を出力しました。
編集: float をテストしていたので、1.1 がそこにあることを忘れていました.. 10000 で割る必要があることはわかっています。
私は何を間違っていますか?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
bool diceRoll (int a)
{
int n = 0;
int b = 0;
while(n < 1) {
b = rand() % 12;
if(b == a || b == 6) n++;
}
if(b == 6) return false;
else return true;
}
int main (void)
{
srand( (unsigned)time(NULL));
int a, n, house, player;
float houseWinRate, playerWinRate;
house = 0;
player = 0;
float total = 1.1;
for(n = 0; n < 10000; n++) {
a = rand() % 12;
if(a == 1 || a == 2 || a == 11) {
house++;
}
else if(a == 6 || a == 10) {
player++;
}
else {
if(diceRoll(a) == true) player++;
else house++;
}
}
printf("%i, %f\n", house, total);
houseWinRate = house / total;
playerWinRate = player / total;
printf("The house has %i points. That's a winrate of %f.\n", house, houseWinRate);
printf("The player has %i points. That's a winrate of %f.\n", player, playerWinRate);
return 0;
}