161
A
回答
270
UPDATE:紅寶石1.9.3 Kernel#rand
還接受範圍
rand(a..b)
http://www.rubyinside.com/ruby-1-9-3-introduction-and-changes-5428.html
轉換爲陣列可以是太昂貴,這是不必要的。
(a..b).to_a.sample
或者
[*a..b].sample
標準的Ruby 1.8.7+。
注意:在1.8.7中命名爲#choice,並在更高版本中重命名。
但無論如何,生成數組需要的資源,和你已經寫的解決方案是最好的,你可以做。
3
請參閱this回答:在Ruby 1.9.2中有,但在早期版本中沒有。我個人認爲rand(8)+ 3很好,但如果你有興趣查看鏈接中描述的Random類。
2
對於10和10 ** 24
rand(10**24-10)+10
81
Random.new.rand(a..b)
哪裏a
是你的最低值和b
是你的最高值。
3
def random_int(min, max)
rand(max - min) + min
end
11
rand(3..10)
When max is a Range, rand returns a random number where range.member?(number) == true.
7
剛剛記下的範圍內運營商之間的區別:
3..10 # includes 10
3...10 # doesn't include 10
1
這裏是兩個#sample
和#rand
快速基準:
irb(main):014:0* Benchmark.bm do |x|
irb(main):015:1* x.report('sample') { 1_000_000.times { (1..100).to_a.sample } }
irb(main):016:1> x.report('rand') { 1_000_000.times { rand(1..100) } }
irb(main):017:1> end
user system total real
sample 3.870000 0.020000 3.890000 ( 3.888147)
rand 0.150000 0.000000 0.150000 ( 0.153557)
所以,做蘭特(範圍)是正確的事情
相關問題
- 1. 隨機數生成兩個區間之間的雙打[a,b]
- 2. [b] [b = a,0]如何在a和b之間交換?
- 3. 如何生成[0,1]和3分數之間的隨機數
- 4. 如何在1到1,000,000之間生成FreePascal中的隨機數
- 5. 我如何在1到16之間的C++中生成一個隨機數?
- 6. 如何生成1000和-1000 C++之間的隨機數?
- 7. a + = b和a = + b之間的區別是什麼,a ++和++ a?
- 8. ||之間的區別a = b和a = a || b在紅寶石?
- 9. ruby中a = 1,b = 2和a = 1(換行符)b = 2之間的差異
- 10. 如何生成一個隨機數
- 11. 在2個數字之間生成一個唯一的隨機數
- 12. 在Haskell中生成一個隨機數
- 13. 在JavaScript中生成一個隨機數
- 14. 在CakePHP中生成一個隨機數?
- 15. 如何在0和C++中的一個變量之間生成一個隨機雙數
- 16. a + b和.__之間的區別__(b)
- 17. 如何在1-10之間生成隨機數字?
- 18. 如何在兩個日期之間生成隨機日期和時間?
- 19. 以n間隔集成a和b之間的函數
- 20. 我如何總計在ruby中生成的隨機數
- 21. 如何在一定量之間生成隨機數量的數字?
- 22. C++:如何從一個數組中生成一個隨機數
- 23. 在C++/cli中生成1和max之間的隨機double
- 24. Kleene明星在編程。 (a | b)*和a * b *之間的區別?
- 25. Scala中f(a,b)和f(a)(b)之間的區別
- 26. 如何創建一個隨機數在-2.0和2.0之間
- 27. 如何生成-1000到1000之間的隨機數字?
- 28. 我如何隨機生成75-100%之間的數字?
- 29. 如何比數組中的其他隨機數生成一個隨機數?
- 30. 如何在FreePascal中生成50個隨機數列表(0到100之間)
`高清my_rand(X,Y); rand(y - x)+ x;結束' – Theo 2010-12-09 05:49:55
@Theo,`y - x + 1`,順便說一句。 – Nakilon 2010-12-09 07:01:28
試試你的正確答案10和10 ** 24作爲限制:0將會非常非常長awaitng :) – 2010-12-09 07:19:20