Görev
Seçtiğiniz herhangi bir şekilde giriş olarak belirtilenden n
daha düşük bir pozitif tamsayı verildiğinde 2^30
, kodunuzun 0
ve n
, dahil olmak üzere rasgele bir tamsayı vermesi gerekir . Ürettiğiniz sayı rastgele eşit şekilde seçilmelidir . Bu, her bir değer 0
için n
eşit olasılıkla cereyan etmesi gerekmektedir (Kurallar ve belgesine bakınız).
Kurallar ve Uyarılar
Kodunuz, kendi dilinizde ya da aynı şekilde rastgele olduğunu iddia eden standart kitaplığın içindeki herhangi bir rasgele sayı üreticisinin aslında tek tip olduğunu varsayabilir. Bu, kullandığınız rasgele kaynağın kalitesi hakkında endişelenmenize gerek yok. Ancak,
- Kullanmakta olduğunuz rastgele kaynağın tek tip olması durumunda, kodunuzun doğrudan tek biçimli bir rasgele tamsayı ürettiğini
0
belirlemeniz gerekirn
. - Bir yerleşik veya kitaplık rastgele işlevini çağırırken herhangi bir argüman sabit olmalıdır. Bu, girdi değerinden tamamen bağımsız olmaları gerektiğidir.
- Kodunuz, sonlandırılması garanti edilmek yerine olasılık 1 ile sona erebilir.
notlar
randInt(0,n)
girişi yerleşik veya kütüphane işlevine bir argüman olarak aldığı için geçerli değil.rand()%n
olacak değil genel olarak tekdüze rasgele sayı verir. Betseg tarafından verilen Örnek olarak, eğerintmax == 15
ven = 10
o zaman almak için çok daha muhtemel olacaktır0-5
daha6-10
.floor(randomfloat()*(n+1))
ayrıca, genel olarak 0 ve 1 arasındaki muhtemel farklı kayan nokta değerlerinin sonlu sayısından dolayı tek tip rastgele bir sayı vermeyecektir.
rng()
sağlar0
-100
, eğern = 75
, ve fonksiyon iserng()%75
, 0-25 daha yaygın olacaktır ...)