Slumgenerator i c++ för matteoperationer
Jag och min kompis diskuterade vad medlet av fyra tärningar där man varje gång tar bort den minsta tärningen skulle vara, om man kastade en massa gånger.
tex 3,3,1,4 -> 3+3+4=10 -> ögonmedelvärde = 10
Vi hittade inget matematiskt sätt att lösa det på, så jag försökte skriva ett program i stället:
#include <iostream>
#include <stdlib.h>
#include <windows.h>
using namespace std;
int main()
{
double kvot = 0, s1 = 0, s2 = 0,b1 = 0,b = 0;
long int t1, t2, t3 ,t4, a;
cout << "Hur manga forsok?" << endl;
cin >> a;
b = 0;
while (b <= a) //själva slumpandet
{
srand(GetTickCount()); //rand seedaren
t1 = rand()%6 + 1; //tärning 1..
t2 = rand()%6 + 1;
t3 = rand()%6 + 1;
t4 = rand()%6 + 1;
s1 = t1+ t2+ t3+ t4 + s2 - min(min(t1,t2),min(t3,t4)); //tärning
//1+2+3+4 + föregående summan - den minsta tärningen
s2 = s1;
b1 = b + 1; //antal "kast" ökar med ett varje gång
b = b1;
}
kvot = s1/b1;
cout << t1 << " " << t2 <<" " << t3 << " " << t4 << endl;
cout << kvot << endl;
system("pause");
}
Men det går cirka 25000 tärningskast innan "rand()-seedern" hinner ändras. 25000 kast blir alltså lika.
Jag skulle vilja att varje kast blev "unikt" för att få ett vettigt medelvärde. Finns det någon snäll person som sitter inne på en lösning?