Tugas
Diberikan bilangan bulat positif n
kurang dari yang 2^30
ditentukan sebagai input dengan cara apa pun yang Anda pilih, kode Anda harus menghasilkan bilangan bulat acak antara 0
dan n
, termasuk. Angka yang Anda hasilkan harus dipilih secara acak . Itu adalah setiap nilai dari 0
hingga n
harus terjadi dengan probabilitas yang sama (lihat Aturan dan Peringatan).
Aturan dan Peringatan
Kode Anda dapat mengasumsikan bahwa setiap generator angka acak yang dibangun ke dalam bahasa Anda atau pustaka standar yang mengklaimnya acak secara acak sebenarnya seragam. Itu adalah Anda tidak perlu khawatir tentang kualitas sumber acak yang Anda gunakan. Namun,
- Anda harus menetapkan bahwa jika sumber acak yang Anda gunakan adalah seragam maka kode Anda dengan benar menghasilkan integer acak seragam dari
0
ken
. - Argumen apa pun saat memanggil fungsi bawaan atau pustaka acak harus konstan. Itu mereka harus sepenuhnya independen dari nilai input.
- Kode Anda dapat berakhir dengan probabilitas 1 daripada dijamin untuk berakhir.
Catatan
randInt(0,n)
tidak valid karena mengambil input sebagai argumen ke fungsi builtin atau library.rand()%n
tidak akan memberikan nomor acak seragam pada umumnya. Sebagai contoh yang diberikan oleh betseg, jikaintmax == 15
dann = 10
, maka Anda akan jauh lebih mungkin mendapatkan0-5
daripada6-10
.floor(randomfloat()*(n+1))
juga tidak akan memberikan angka acak seragam pada umumnya karena jumlah terbatas dari nilai floating point yang mungkin antara 0 dan 1.
rng()
memberikan0
-100
, jikan = 75
, dan fungsinya adalahrng()%75
, maka 0-25 akan lebih umum ...)