dice generating
投擲㇐個六面骰子60,000,000次 switch case

requires 2 sec

require less
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 7
// function main begins program execution
int main(void)
{
unsigned int frequency [SIZE] = {0}; // clear counts
srand(time(NULL));
// seed random number generator
// roll die 60,000,000 times
for (unsigned int roll = 1; roll <= 60000000; ++roll) {
size_t face = 1 + rand() % 6; ++frequency [face]; // replaces entire switch of Fig. 5.12
}
printf("%s%17s\\n", "Face", "Frequency");
// output frequency elements 1-6 in tabular format
for (size_t face = 1; face < SIZE; ++face) {
printf("%4d%17d\\n", face, frequency [face]);
}
}
// Fig. 5.12: fig05_12.c
// Rolling a six-sided die 6,000,000 times.
#include <stdio.h>
#include <stdlib.h>
// function main begins program execution
int main( void )
{
unsigned int frequency1 = 0; // rolled 1 counter
unsigned int frequency2 = 0; // rolled 2 counter
unsigned int frequency3 = 0; // rolled 3 counter
unsigned int frequency4 = 0; // rolled 4 counter
unsigned int frequency5 = 0; // rolled 5 counter
unsigned int frequency6 = 0; // rolled 6 counter
unsigned int roll; // roll counter, value 1 to 6000000
int face;
// represents one roll of the die, value 1 to 6
// loop 6000000 times and summarize results
for (roll = 1; roll <= 6000000; ++roll) {
face = 1 + rand() % 6;
// random number from 1 to 6
// determine face value and increment appropriate counter
switch (face) {
case 1: // rolled 1
++frequency1;
break;
case 2: // rolled 2
++frequency2;
break;
case 3: // rolled 3
++frequency3;
break;
case 4: // rolled 4
++frequency4;
break;
case 5: // rolled 5
++frequency5;
break;
case 6: // rolled 6
++frequency6;
break; // optional
} // end switch
} // end for
// display results in tabular format
printf( "%s%13s\\n", "Face", "Frequency" );
printf(" 1%13u\\n", frequency1 );
printf(" 2%13u\\n", frequency2);
printf(" 3%13u\\n", frequency3);
printf(" 4%13u\\n", frequency4 );
printf(" 5%13u\\n", frequency5 );
printf(" 6%13u\\n", frequency6 );
} // end main