( szemet | 2009. 01. 13., k – 19:27 )

(Na ezt a postot összevissza szerkesztgettem, de most már jó;)

szerk: Nem mégsem jó, de most már itt hagyom hátha valaki ki tudja dolgozni a forradalmi ötletet helyesen... :)

Nagyon unatkozom, úgyhogy előállok még egy megoldással, ami kicsit más :) :

Két véletlen számot generálunk csak, azonban olyan eloszlásban, ami megfelel a feladat követelményeinek. Tfh. az eredeti megoldásban 1-től n-ig generált 3db. véletlen egész számból választjuk ki min-t és max-ot. Ekkor ehelyett:

1. generáljunk véletlen egész számot 1 és (n+1)*n között
2. a fent generált számhoz keressük meg a legközelebbi négyzetszámot amit jelöljünk k-val
3. d := sqrt(k)-1
4. a := véletlenszám 1 és n-d között ([1;n-d] zárt.int.)
5. b := a+d

Ekkor "a"(minimum) és "b"(maximum) eloszlása tökéletesen olyan mintha azt 3 számból válogattuk volna! :)