用多线程并发实现不重复的N个伪随机自然数

def NoRep(count)
vnow=0
ts=[]
count.times do |i|
ts[i]=Thread.new do
sleep(rand(0.01))
Thread.current["val"]=vnow
vnow+=1
end
end
ary=[]
ts.each{|t|t.join;ary<<t["val"]}
ary
end
p NoRep(100)

 

而另一种不用线程并发的方式为:

 

def NoRep(n)
a=(1..n).to_a
ac=[]
until a.empty?
idx=rand(a.size)
x=a[idx]
a.delete(x)
ac<<x
end
ac
end

 

文档上说r1.9有Array#choice方法,结果没找到,so...如上。

 

还有一种方法: (1..100).to_a.sort_by {rand}

 

最后有一种更简单的方式:Array#shuffle.

 

时间: 2024-11-18 05:27:35

用多线程并发实现不重复的N个伪随机自然数的相关文章

Python控制多进程与多线程并发数

Python控制多进程与多线程并发数 0x01 前言 本来写了脚本用于暴力破解密码,可是1秒钟尝试一个密码2220000个密码我的天,想用多线程可是只会一个for全开,难道开2220000个线程吗?只好学习控制线程数了,官方文档不好看,觉得结构不够清晰,网上找很多文章也都不很清晰,只有for全开线程,没有控制线程数的具体说明,最终终于根据多篇文章和官方文档算是搞明白基础的多线程怎么实现法了,怕长时间不用又忘记,找着麻烦就贴这了,跟我一样新手也可以参照参照. 先说进程和线程的区别: (1)地址空间

Python控制多进程与多线程并发数总结_python

一.前言 本来写了脚本用于暴力破解密码,可是1秒钟尝试一个密码2220000个密码我的天,想用多线程可是只会一个for全开,难道开2220000个线程吗?只好学习控制线程数了,官方文档不好看,觉得结构不够清晰,网上找很多文章也都不很清晰,只有for全开线程,没有控制线程数的具体说明,最终终于根据多篇文章和官方文档算是搞明白基础的多线程怎么实现法了,怕长时间不用又忘记,找着麻烦就贴这了,跟我一样新手也可以参照参照. 先说进程和线程的区别: 地址空间:进程内的一个执行单元;进程至少有一个线程;它们共

Linux下基于socket多线程并发通信的实现

pthread_server.c /*************************************************** * 文件名:pthread_server.c * 文件描述:创建子线程来接收客户端的数据 ***************************************************/ #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #in

银行取款[多线程]{未进行线程同步}(junit不适合多线程并发单元测试)

        由于计算机多任务.多进程.多线程的支持,使得计算机资源的服务效率提高,服务器对请求的也使用线程来相应,所有,代码中涉及到同时对共享数据的操作,将在 多线程环境中操作数据,导致数据安全问题.      经典例子:老婆(朱丽叶)老公(罗密欧),使用银行卡和存折,或者网银等,同时对同一账户操作的安全问题.      如果要保证多线程下数据安全,就要实现线程同步(例如:一间小厕所,就得有一个锁,保证同一时间为一个人服务).其他文章讲: 此处用多线程实现,同时取款的模拟实现,未进行线程同步

解决Java多线程并发的计数器问题

问题描述 解决Java多线程并发的计数器问题 3C public class Counter { public static int count = 0; public synchronized static void inc() { count++; } public static void main(String[] args) { //同时启动1000个线程,去进行i++计算,看看实际结果 for (int i = 0; i < 1000; i++) { new Thread(new Ru

MFC定时器并发转多线程并发的代码优化问题

问题描述 MFC定时器并发转多线程并发的代码优化问题 MFC定时器并发进一步优化为多线程并发,在双核联想品牌笔记本上运行速度没有提高的原因是什么? 解决方案 主要是检查你的线程是不是并发执行的还是过度进行了同步. 解决方案二: 先要看你的并发线程的任务能不能够都同时处理.

单元性能测试之使用JUnitPerf测试多线程并发

简介: 单元测试和性能测试在测试领域属于要求相对较高的测试活动,也是测试工程师成长.向上发展的反向.单元测试评测我们的代码实现功能的情况,性能测试则企图分析应用程序的性能表现和负载能力.那么"单元性能测试"能做什么?我们可以这样说,单元性能测试以单元测试的形式对代码进行性能测试.单元性能测试像单元测试一样,需要测试人员编写测试代码,但现在关注的不是代码的功能实现情况了,而是想得到被测试代码的性能数据,包括执行方法耗时.多线程并发是否线程安全.内存是否泄漏.是否存在短期循环对象等.单元性

java 关于类似售票系统的多线程并发 的问题

问题描述 java 关于类似售票系统的多线程并发 的问题 本人对多进程和多线程不大了解,还请各位高手解答下,先谢了.问题如下: 1.多线程的并发,我查了下资料,一般解释的是:一个进程可以包含多个线程,一个线程完成一个功能,这样,进程执行的时候,它包含的多个线程可以看成同时执行. 那多线程的并发,可不可以有另外的理解:如果这时的某个进程只有一个线程,那么,同时有多个类似的进程同时启动,这时是不是就产生了多个进程下要同时完成相同任务的多个线程,这算不算多线程的并发? 下面拿售票系统举例说明下, 2.

一个有关MFC定时器并发如何改写成多线程并发的问题

问题描述 一个有关MFC定时器并发如何改写成多线程并发的问题 请问MFC中定时器并发所用到的消息函数转换成多线程并发以后,这些参数都需要做转换么?没有消息函数如何实现并发调用执行的功能呢? 解决方案 http://blog.csdn.net/wangweitingaabbcc/article/details/6723606 解决方案二: http://blog.csdn.net/zhandoushi1982/article/details/6041430