როგორ გავაფართოვოთ კამათელი C, C ++ და C #?

როგორ გავაფართოვოთ კამათელი C, C ++ და C #?

ამ პროგრამას იყენებს srand () ფუნქცია თესლის შემთხვევითი რიცხვის გენერატორის თესლისთვის. Ფუნქცია შემთხვევითი (ო) ბრუნდება მთელი რიცხვი 1-დან n-ის ჩათვლით.

მასივი ტოტები ფლობს ჯამურ ქულებს 3-დან 18-მდე. ის შემდეგ მარყუჟებს 10 მილიონჯერ. ეს რიცხვი განისაზღვრება როგორც const, მაგრამ თუ თქვენი შემდგენი მხარს არ უჭერს მხარს, შეცვალეთ #define ნაცვლად.

თითოეული კამათელი, d1, d2 და d3 ფლობს შემთხვევითი () წარმოქმნილი კამათელი როლიკებით იღება და კომბინირებული კამათელი ქულისთვის ელემენტი (დიაპაზონში 3-18) არის მომატებული.

ბოლო ნაწილი ანაბეჭდება მთლიანი ნაწილებისგან, რომ დაინახოს, რომ ის აყენებს დარტყმებს ალბათობების შესაბამისად. 6 ცალმხრივ კამათელს აქვს საშუალო ქულა 3.5, ასე რომ სამი კამათელი საშუალოდ უნდა იყოს დაახლოებით 10.5. ტოტალი 10 და 11 არის დაახლოებით იგივე და გვხვდება დროის დაახლოებით 12.5%.

აქ არის გამომავალი ტიპიური პერსპექტივა. წამს არაუმეტეს.

ათ მილიონამდე კამათელი

  • 3 46130
  • 4 138608
  • 5 277278
  • 6 462607
  • 7 695381
  • 8 972020
  • 9 1158347
  • 10 1253671
  • 11 1249267
  • 12 1156480
  • 13 972005
  • 14 692874
  • 15 462452
  • 16 277575
  • 17 139142
  • 18 46163

// dicerolls.c:
#include / * საჭიროა მხოლოდ სანდლის თესლისთვის * /
# შევა
# შევა
const tenmillion = 1000000L;
/ * # განსაზღვრა ათი მილიონი 10000000L * /
ბათილია Randomize ()
srand ((ხელმოუწერელი) დრო (NULL));
}
int შემთხვევითი (int Max)
დაბრუნება (rand ()% Max) + 1;
}
int main (int argc, char * argv)
{
მე;
ინ ტოტალი19;
printf ("ათი მილიონი კამათის გაშვება n");
რანდომიზაცია ();
for (i = 3; i <= 18; i ++)
ჯდება i = 0;
for (i = 0; i <tenmillion; i ++)
{
int d1 = შემთხვევითი (6);
int d2 = შემთხვევითი (6);
int d3 = შემთხვევითი (6);
int საერთო = d1 + d2 + d3;
ჯამურია ++;
}
for (i = 3; i <= 18; i ++)
{
printf ("% i% i n r", i, შეადგენს i);
}
დაბრუნება 0;
}