用ruby如何生成多个同范围的不重复的随机数?

Python027

用ruby如何生成多个同范围的不重复的随机数?,第1张

如果不想多次随机并检测是否已经存在, 那可以先生成你要的范围, 然后用sample

当然这么做并不适用于范围超级大的时候

range = (1..1000).to_a

p range.sample(5)

以上可以取得5个不重复的1-1000内的数字

Ruby 是一个源自于日本的程式语言,并且由于 Ruby on Rails 这套便于快速开发网页应用程式的框架而在近年走红,如果你从事网页相关开发工作,我想大概已经听过 Ruby on Rails 这套网页框架,但或许你分不太出来 Ruby 以及 Rails 的差别,以及 Ruby 除了 Rails 之外、还能用来做些什么?

与其他常见的程式语言相比,Ruby 具备了更有弹性的语法,在 Ruby 的哲学当中,通常要完成某个行为不一定只有一种方法,往往会有数种不同的方法让开发者选择。也因为这样的弹性,通常开发者会透过 Ruby 设计「特定领域语言」(Domain Specific Lanauge)来解决问题,有点像是我们平常讲的是中文、但是会透过中文定义一组针对「法律」相关问题的「法律语言」。

Ruby on Rails

不过当然,Ruby on Rails 还是多数人接触 Ruby 语言的主要原因,同样使用 DSL 的设计概念,Rails 标榜著以下两个设计哲学:

1. 惯例大于设定(convention over configuration),在多数的情况下都使用 Rails 预设的设定,而减少手动去指定各项参数

2. 不重复(Don’t repeat yourself),尽量减少重复的程式码复制贴上到各处,而用比较有架构、组织的方式重用

在开发上速度很快,加上 Rails DSL 的语法相当简易,透过Rails Girls 这样的新手教学活动,几乎在一天之内就可以做出简单的网站。也因此很多人甚至常常开玩笑说会写 Rails 不见得会写 Ruby。

说了这么多,作为一个长期的社群参与者以及 Ruby 语言的使用者,在今年当中我观察到很多迹象,都显示目前是大家尚未入门要学习的好时机。主要原因有三个:

广泛地被大小企业采用

以前提到 Ruby 或 Rails 的使用状况往往我们会想到的都是新创或网路公司的例子,但近年来越来越多传统企业在面对网应用路开发需求时,也纷纷选择 Rails 作为主要架构,像是在国内的部分,我们可以发现在社群的求职看板上,包含知名连锁书局、纺织业等等的例子。

Ruby 以及 Rails 的效能有很大的进步

以往通常 Rails 开发者都会被其他语言的开发者嘲笑在速度上可能不佳,但在近期的改版当中,Ruby 2.1 以及 Rails 4.1 都有很大的效能进步,是有史以来最快的版本。

社群以及教育资源遍地开花