日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从5随机到7随机及其扩展

發布時間:2025/4/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从5随机到7随机及其扩展 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

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

def rand1To5():import randomreturn int(random.random()*5) + 1

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

基本思路:

  1、rand1To5() 等概率產生1,2,3,4,5?
  2、rand1To5()-1 等概率產生0,1,2,3,4?
  3、(rand1To5()-1)*5 等概率的產生0,5,10,15,20?
  4、(rand1To5()-1)*5+rand1To5()-1 等概率的產生0,1,2,3…23,24?
  5、如果步驟4產生的結果大于20,重新隨機,直到產生的結果在0~20之間。?
  6、步驟5的結果再進行%7,然后再加1,就是最終的結果。
?

def rand1To5():import randomreturn int(random.random()*5) + 1def rand1To7():num = (rand1To5()-1)*5 + rand1To5() - 1while num > 20:num = (rand1To5()-1) * 5 + rand1to5() - 1return num%7 + 1

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

def rand01p():p = 0.83return 0 if random.random() < p else 1

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

思路:

雖然rand01p方法是以p的概率產生0,以1-p的概率產生1,但是rand01p產生01和10的概率卻都是p(1-p),可以利用這點來實現等概率隨機產生0和1的函數,有了等概率產生0和1的函數,接下來的步驟和原問題類似。先實現隨機產生0~3的隨機函數,再利用0~3的隨機函數實現隨機產生1~6的隨機函數。

def rand01p():import randomp = 0.83return 0 if random.random() < p else 1def rand01():num = rand01p()while num == rand01p():num = rand01p()return numdef rand0To3():return rand01()*2 + rand01()def rand1To6():num = rand0To3()*4 + rand0To3()while num > 11:num = rand0To3()*4 + rand0To3()return num%6 + 1

?

總結

以上是生活随笔為你收集整理的从5随机到7随机及其扩展的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。