1. 程式人生 > >9.1 從5隨機到7隨機及其擴展

9.1 從5隨機到7隨機及其擴展

pre public 函數 double 參數 及其 return clas and

題目】:

  1~5的隨機函數rand1To5如下:

1 pu7blic int rand1To5(){
2     return (int) (Math.random() * 5) + 1;
3 }

  除此之外,不能使用任何額外的隨機機制,請用rand1To5實現等概率隨機產生1~7的隨機函數rand1To7

補充題目】:

  給定一個以p概率產生0, 以1-p概率產生1的隨機函數rand01p如下:

1 public int rand01p(){
2     // 可隨意改變p
3     double p = 0.83;
4     return Math.random() < p ? 0 : 1;
5 }

  除此之外,不能使用任何額外的隨機機制,請用rand01p實現等概率隨機產生1~6的隨機函數rand1To6

進階題目】:

  給定一個等概率隨機產生1~M的隨機函數rand1ToM如下:

1 public int rand1ToM(int m){
2     return (int) (Math.random() * m) + 1;
3 }

  除此之外,不能使用任何額外的隨機機制。有兩個輸入參數,分別為m和n,請用rand1ToM(m)實現等概率隨機產生1~n的隨機函數rand1ToN

9.1 從5隨機到7隨機及其擴展