pengantar
Anda diberi generator integer acak dengan implementasi berikut
- Doa pertama selalu mengembalikan 1.
- Doa kedua mengembalikan integer acak antara 1 dan 2.
- Doa ketiga mengembalikan integer acak antara 1 dan 3.
- Doa n mengembalikan integer acak antara 1 dan n, inklusif.
Berdasarkan fungsi di atas, tulis generator dadu acak yang sangat acak, mengembalikan nilai antara 1 dan 6 (inklusif) dengan probabilitas yang sama.
Aturan
- Program / fungsi Anda harus menghasilkan bilangan bulat acak antara 1 dan 6, inklusif, dalam beberapa bentuk yang dapat digunakan, yaitu, untuk output standar atau sebagai nilai pengembalian fungsi.
- Generator angka acak yang naik di atas dapat didefinisikan sebagai fungsi "bebas" dalam program Anda (yaitu, tidak dihitung terhadap jumlah karakter Anda), atau skrip / program terpisah yang dijalankan sesuai kebutuhan, dengan asumsi state (
n
) persisten antar panggilan. - Asumsikan bahwa tidak lebih dari 1000 gulungan dadu akan diminta dalam satu kasus penggunaan program Anda, dan generator nomor acak awal dapat diatur ulang
1
pada akhir 1000 gulungan dadu untuk menghindari kelebihann
. - Program Anda mungkin tidak menggunakan salah sumber lain dari angka acak kecuali acak naik didefinisikan di atas. Anda tentu saja dapat meminta beberapa nomor acak dari generator nomor acak untuk setiap output gulungan dadu tunggal.
- Ini adalah kode-golf, jadi pemenang adalah jawaban terpendek atau suara terbanyak dalam hal seri. Jika Anda dapat menghasilkan 1.000 dadu gulungan menggunakan kurang dari 1000 angka acak yang dihasilkan, beri diri Anda bonus efisiensi 10 poin .
Contoh
./asc-rand
1 # random integer between 1 and 1
./asc-rand
1 # random integer between 1 and 2
./asc-rand
3 # random integer between 1 and 3
./asc-rand
4 # random integer between 1 and 4
# dice-gen generates random dice based on output of asc-rand program.
./dice-gen
3
./dice-gen
6
./dice-gen
5
./dice-gen
1
iterate(6):b=asc-rand(); print b
ilegal atau tidak berfungsi? Saya mungkin salah mengerti aturan ketiga.