如何在Ruby中获得随机数
如何生成0
到n
之间的随机数?
#1楼
那这个呢?
n = 3
(0..n).to_a.sample
#2楼
如果您不仅要查找数字,而且要查找十六进制或uuid,则值得一提的是, SecureRandom
模块已从ActiveSupport
找到了红宝石核心。 因此,不需要完整的框架:
require 'securerandom'p SecureRandom.random_number(100) #=> 15
p SecureRandom.random_number(100) #=> 88p SecureRandom.random_number #=> 0.596506046187744
p SecureRandom.random_number #=> 0.350621695741409p SecureRandom.hex #=> "eb693ec8252cd630102fd0d0fb7c3485"
它在此处记录: Ruby 1.9.3-模块:SecureRandom(lib / securerandom.rb)
#3楼
rand(6) #=> gives a random number between 0 and 6 inclusively
rand(1..6) #=> gives a random number between 1 and 6 inclusively
请注意,range选项仅在红宝石的较新版本(我相信是1.9+)中可用。
#4楼
您可以使用rand
方法生成一个随机数。 传递给rand
方法的参数应为integer
或range
,并返回该范围内的相应随机数:
rand(9) # this generates a number between 0 to 8
rand(0 .. 9) # this generates a number between 0 to 9
rand(1 .. 50) # this generates a number between 1 to 50
#rand(m .. n) # m is the start of the number range, n is the end of number range
#5楼
好吧,我知道了。 显然有一个称为rand的内置(?)函数:
rand(n + 1)
如果有人回答的答案更详细,我会将其标记为正确答案。
#6楼
使用rand(range)
从Ruby随机数开始 :
如果您需要一个随机整数来模拟六面骰子的掷骰,则可以使用:
1 + rand(6)
。 掷骰子可以用2 + rand(6) + rand(6)
模拟。最后,如果您只需要随机浮点数,则可以不带任何参数调用
rand
。
正如Marc-AndréLafortune在下面的回答中提到的(支持它) , Ruby 1.9.2具有自己的Random
类 (Marc-André自己进行了调试 ,因此该功能的目标1.9.2 )。
例如,在这个游戏中,您需要猜测10个数字 ,可以使用以下方法初始化它们:
10.times.map{ 20 + Random.rand(11) }
#=> [26, 26, 22, 20, 30, 26, 23, 23, 25, 22]
注意:
通常,使用
Random.new.rand(20..30)
(使用Random.new
)并不是一个好主意,正如Marc-AndréLafortune (再次)在其答案中再次详细解释的那样。但是,如果您不使用
Random.new
,则类方法rand
仅采用一个max
,而不是Range
,因为banister (强烈地)在注释中指出了这一点(并在docs的文档中针对Random
)。 只有实例方法可以采用Range
,如生成7位随机数所示。
这就是为什么Random.new.rand(20..30)
等于20 + Random.rand(11)
,因为Random.rand(int)
返回“一个大于或等于0且小于 0的随机整数。 自变量 。” 20..30
包括30,我需要给出一个介于0到11之间的随机数(不包括11)。
#7楼
不要忘记先用srand()播种RNG。
#8楼
此链接将对此有所帮助;
http://ruby-doc.org/core-1.9.3/Random.html
以下是关于红宝石中随机数的更多说明;
生成一个从0到10的整数
puts (rand() * 10).to_i
以更易读的方式生成从0到10的数字
puts rand(10)
生成10到15之间的数字,包括15
puts rand(10..15)
非随机数
每次运行程序时生成相同的数字序列
srand(5)
产生10个随机数
puts (0..10).map{rand(0..10)}
#9楼
虽然你可以使用rand(42-10) + 10
获得之间的随机数10
和42
(其中10是包容性和排他性42),有自红宝石1.9.3,您可以拨打其中一个更好的方法:
rand(10...42) # => 13
需要我的backports
gem可用于所有版本的Ruby。
Ruby 1.9.2还引入了Random
类,因此您可以创建自己的随机数生成器对象并具有一个不错的API:
r = Random.new
r.rand(10...42) # => 22
r.bytes(3) # => "rnd"
Random
类本身充当随机生成器,因此您可以直接调用:
Random.rand(10...42) # => same as rand(10...42)
有关Random.new
在大多数情况下,最简单的方法是使用rand
或Random.rand
。 每次想要一个随机数时都创建一个新的随机数生成器是一个非常糟糕的主意 。 如果执行此操作,则将获得初始播种算法的随机属性,与随机生成器本身的属性相比,这些属性非常糟糕。
如果使用Random.new
,则应尽可能少地调用它,例如,作为MyApp::Random = Random.new
一次,并在其他地方使用它。
以下是其中Random.new
有用的情况:
- 您正在编写gem,并且不想干扰主程序可能依赖的
rand
/Random.rand
的顺序 - 您需要单独的可重现的随机数序列(例如每个线程一个)
- 您希望能够保存和恢复可再现的随机数序列(因为
Random
对象可以编组,这很容易)
#10楼
尝试使用array#shuffle
方法进行随机化
array = (1..10).to_a
array.shuffle.first
#11楼
最简单的答案:
rand(0..n)
#12楼
你可以做兰德(范围)
x = rand(1..5)
#13楼
也许对您有帮助。 我在我的应用程序中使用它
https://github.com/rubyworks/facets
class String# Create a random String of given length, using given character set## Character set is an Array which can contain Ranges, Arrays, Characters## Examples## String.random# => "D9DxFIaqR3dr8Ct1AfmFxHxqGsmA4Oz3"## String.random(10)# => "t8BIna341S"## String.random(10, ['a'..'z'])# => "nstpvixfri"## String.random(10, ['0'..'9'] )# => "0982541042"## String.random(10, ['0'..'9','A'..'F'] )# => "3EBF48AD3D"## BASE64_CHAR_SET = ["A".."Z", "a".."z", "0".."9", '_', '-']# String.random(10, BASE64_CHAR_SET)# => "xM_1t3qcNn"## SPECIAL_CHARS = ["!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "_", "=", "+", "|", "/", "?", ".", ",", ";", ":", "~", "`", "[", "]", "{", "}", "<", ">"]# BASE91_CHAR_SET = ["A".."Z", "a".."z", "0".."9", SPECIAL_CHARS]# String.random(10, BASE91_CHAR_SET)# => "S(Z]z,J{v;"## CREDIT: Tilo Sloboda## SEE: https://gist.github.com/tilo/3ee8d94871d30416feba## TODO: Move to random.rb in standard library?def self.random(len=32, character_set = ["A".."Z", "a".."z", "0".."9"])chars = character_set.map{|x| x.is_a?(Range) ? x.to_a : x }.flattenArray.new(len){ chars.sample }.joinendend
https://github.com/rubyworks/facets/blob/5569b03b4c6fd25897444a266ffe25872284be2b/lib/core/facets/string/random.rb
这对我来说可以
#14楼
这个怎么样?
num = Random.new
num.rand(1..n)
#15楼
范围= 10..50
兰德(范围)
要么
range.to_a.sample
要么
range.to_a.shuffle (这将对整个数组进行混洗,您可以在数组的第一个或最后一个或任意一个随机数中选择一个随机数)
#16楼
您可以简单地使用random_number
。
如果给定正整数n,则random_number
返回整数:0 <= random_number
<n。
像这样使用它:
any_number = SecureRandom.random_number(100)
输出将是0到100之间的任何数字。
#17楼
获得红宝石中随机数的简单方法是
def random (1..10).to_a.sample.to_s
end
#18楼
使用“ rand”功能就像这样
rand(10)
#19楼
在ruby语言中,我们有方法作为rand()
。 您可以使用此方法生成随机数。 rand()
方法只有整数参数或范围。此方法的返回类型是随机整数。
rand() # This Will generates a random number between 0.0 to 1.0rand(10) # This Will generates a number between 0 to 10rand(1 .. 9) # This Will generates a number between 1 to 10rand(1 ... 10) # This Will generates a number between 2 to 9
注意:
rand()
生成的数字足以用于简单的应用程序。但是如果出于安全目的需要它,比如生成一次性密码,创建密码重置令牌,那么你必须使用Ruby标准库中的一个
SecureRandom
。
require 'securerandom'SecureRandom.random_number
=> 0.232SecureRandom.random_number(100)
=> 72SecureRandom.hex
=> "87694e9e5231aba6ssdfs3de39c58cdfbe307"
如何在Ruby中获得随机数相关推荐
- java如何实取随机数_java - 如何在Kotlin中获取随机数?
java - 如何在Kotlin中获取随机数? 可以在2个参数之间返回随机整数的通用方法,如ruby,可以使用rand(0..n). 有什么建议吗? 16个解决方案 208 votes 我的建议是In ...
- 如何在Ruby中编写switch语句
如何在Ruby中编写switch语句? #1楼 案例...当 在Chuck的答案中添加更多示例: 带参数: case a when 1puts "Single value" whe ...
- 如何在Ruby中使用数组方法
介绍 (Introduction) Arrays let you represent lists of data in your programs. Once you have data in an ...
- JavaScript 随机数 – 如何在 JS 中生成随机数
在使用 JavaScript 程序时,有时您可能需要生成一个随机数. 例如,您可能希望在开发 JavaScript 游戏(例如猜数字游戏)时生成一个随机数. JavaScript 有许多用于处理数字和 ...
- 如何在Ruby中写入文件?
我需要从数据库中读取数据,然后将其保存在文本文件中. 我怎么能在Ruby中做到这一点? Ruby中有文件管理系统吗? #1楼 在大多数情况下,这是首选方法: File.open(yourfile, ' ...
- 如何在Ruby中求和数字数组?
我有一个整数数组. 例如: array = [123,321,12389] 有没有什么好办法可以得到它们的总和? 我知道 sum = 0 array.each { |a| sum+=a } 会工作. ...
- ruby字符串截取字符串_如何在Ruby中附加字符串?
ruby字符串截取字符串 There are multiple ways to do the required but we will study about three of them. 有多种方法 ...
- ruby hash添加数据_如何在Ruby中向Hash添加元素?
ruby hash添加数据 Before going through the ways to add elements to the hash instances, let us understand ...
- 如何在C++中产生随机数
C++中没有自带的random函数,要实现随机数的生成就需要使用rand()和srand().不过,由于rand()的内部实现是用线性同余法做的,所以生成的并不是真正的随机数,而是在一定范围内可看为随 ...
最新文章
- 使用nat方式解决虚拟机联网问题
- 为了进行差错控制,必须对传送的数据帧进行校验。在局域网中广泛使用的校验方法是循环冗余校验。当接收端发现错误后采取的措施是
- 清华大学 现代软件工程 结对编程项目 (一)
- Mongodb的安装部署
- 祝贺王远当选为中国区第二位 Teams MVP
- c语言mcisendstring函数,mciSendString用法
- poj3320 尺取法 挑战程序设计竞赛
- 开发MIS系统需要的技术及其含义、作用
- 《简明 PHP 教程》03 第一步
- 校门外的树和memset
- 升讯威周报与工时统计系统 V3
- cmd窗口ping端口的方法:telnet ip 端口
- 3、思科模拟器介绍 (认识思科模拟器界面、安装思科模拟器、思科模拟器汉化)
- 基于c语言的象棋游戏-附带人机算法
- echarts 柱状图颜色及渐变色设置
- ts 修饰符_TS4 新特性一览
- 矸石称重自动化系统有什么特点
- 纪中暑假培训 :Date:7 终章-剑之魂
- 常见的java面试题
- 有没有哪位同志看看哪个地方出错了
热门文章
- 从Android的结构看HarmonyOS
- common-IO.jar相关
- 新手java五子棋完整代码判断落子落在线上_Java初学者,编写小游戏五子棋的问题?...
- Java学习笔记26
- swift_001(Swift的注释)
- echart旭日图_150Echarts - 旭日图(Sunburst Label Rotate)
- PAT甲级——1102 Invert a Binary Tree (层序遍历+中序遍历)
- Linux远程远程控制程序TeamViewer
- BZOJ2120 数颜色 【带修改莫队】
- 树莓派(Raspberry Pi 3) centos7使用yum命令报错File /usr/bin/yum, line 30 except KeyboardInterrupt, e:...