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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

leetcode 470. 用 Rand7() 实现 Rand10()

發(fā)布時間:2025/5/22 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 470. 用 Rand7() 实现 Rand10() 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

難度:中等
頻次:55

題目:

給定方法 rand7 可生成 [1,7] 范圍內(nèi)的均勻隨機整數(shù),試寫一個方法 rand10 生成 [1,10] 范圍內(nèi)的均勻隨機整數(shù)。

你只能調(diào)用 rand7() 且不能調(diào)用其他方法。請不要使用系統(tǒng)的 Math.random() 方法。

每個測試用例將有一個內(nèi)部參數(shù) n,即你實現(xiàn)的函數(shù) rand10() 在測試時將被調(diào)用的次數(shù)。請注意,這不是傳遞給 rand10() 的參數(shù)。

解題思路:數(shù)學規(guī)律

  • 規(guī)律1:

randX-1=【0,X-1】==a
randY=【1,Y】==b
那么ab就會是下面的表格,即所有的隨機數(shù)都有了

randXY=(randX-1)*X+randY;

  • 規(guī)律2

randX%N+1 可以用randX模擬randN【但是這一部分只能在N的倍數(shù)內(nèi),超出部分要舍棄—這也是while(true)的意義】

/*** The rand7() API is already defined in the parent class SolBase.* public int rand7();* @return a random integer in the range 1 to 7*/ class Solution extends SolBase {public int rand10() {//while的 意義是有一些數(shù)組遍歷不到,重來。比如說1-49 41-49就遍歷不到//后面的81 也遍歷不到while(true){int num=(rand7()-1)*7+rand7(); //==rand49() randX*Y=(randX()-1)*X+randYif(num<=40) {return num%10+1;}else{//這里是41-49 %10----1-9 rand9 減少丟棄的數(shù)字int a=(num-1)*9+num;if(a<=80) {return num%10+1;}}}} }

總結

以上是生活随笔為你收集整理的leetcode 470. 用 Rand7() 实现 Rand10()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。