精易论坛

标题: 1-10w范围内99999组不重复数,生成用时1.2s...... [打印本页]

作者: Patek    时间: 2018-1-15 13:24
标题: 1-10w范围内99999组不重复数,生成用时1.2s......
  
子程序名返回值类型公开备 注
取随机数_asmEx整数型 真 随机
参数名类 型参考可空数组备 注
最小整数型
最大整数型
如果真 (最大 < 最小)
返回 (最大 - 1)
置入代码 ({ 81, 82, 15, 49, 185, 23, 0, 0, 0, 247, 225, 131, 192, 7, 139, 77, 12, 43, 77, 8, 65, 51, 210, 247, 241, 3, 85, 8, 139, 194, 90, 89, 201, 194, 8, 0 })
返回 (0)
子程序名返回值类型公开备 注
范围内不重复随机 
参数名类 型参考可空数组备 注
起始值 
目标值 
不重复数量 
返回数组
变量名类 型静态数组备 注
n整数型 
整数型0
Z整数型0
Random整数型 
重定义数组 (返回数组, 假, 0)
重定义数组 (数, 假, 目标值 - 起始值 + 1)
变量循环首 (起始值, 目标值, 1, n)
[n - 起始值 + 1] = n
变量循环尾 ()
计次循环首 (不重复数量, n)
Random = 取随机数_asmEx (1, 取数组成员数 ())
如果真 (Random < 1)
返回 ()
加入成员 (Z, 数 [Random])
删除成员 (数, Random, )
计次循环尾 ()
返回数组 = Z


代码东拼西凑的。

  
子程序名返回值类型公开备 注
子程序1  
变量名类 型静态数组备 注
AA整数型0
X  
T  
T = 取启动时间 ()
范围内不重复随机 (1, 100000, 99999, AA)
调试输出 (取启动时间 () - T, “xxx”)
计次循环首 (取数组成员数 (AA), X)
调试输出 (AA [X])
计次循环尾 ()


i支持库列表   支持库注释   
spec特殊功能支持库




作者: 镇坛道德标杆    时间: 2018-1-15 13:49
本帖最后由 镇坛道德标杆 于 2018-1-15 13:58 编辑




Ex.e (49.51 KB, 下载次数: 65)

那就提升个几百倍,具体原理之类的参考以前的贴子:

http://125.confly.eu.org/forum.php?mod=viewthread&tid=13950852&extra=

随机数可以阅读 JBec 的随机数生成器:

https://125.confly.eu.org/forum.php?mod=viewthread&tid=14101524&extra=

作者: 猥琐小胖子    时间: 2018-1-15 14:37
数组Z 可以先判断下最终数量,先提前定义,循环内用赋值这边可以再节约时间。
数组的删除效率是很低的,删除一个整体移动,这个用链表。
作者: jr21066    时间: 2018-1-15 14:49
是那个五代cpu才能用的指令吗?
三代羡慕中
作者: jr21066    时间: 2018-1-15 14:55
反汇编了.原来不是我说的那个

随便把这个也加上吧.效率还是不错的.除了对硬件有要求.
原帖地址: http://bbs.eyuyan.com/read.php?tid=405670&fpage=2

Rand.e

4.7 KB, 下载次数: 17, 下载积分: 精币 -2 枚


作者: dyx461090975    时间: 2018-1-15 15:14
牛逼 学习一下
作者: aManQ    时间: 2018-1-15 15:21
厉害了,为什么还有10字限制。。。。
作者: wangguan    时间: 2018-1-15 15:27
感谢分享!!!
作者: falali5566    时间: 2018-1-15 16:27
学习一下
作者: cesn    时间: 2018-1-15 18:49
66666666666
作者: x961025    时间: 2018-1-16 17:08
感谢分享!!!
作者: jyanle    时间: 2018-1-16 18:16
好多大佬。。。。
作者: 落款hMZ    时间: 2018-1-16 22:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: 晶冬赏澄    时间: 2020-12-23 02:56
落款hMZ 发表于 2018-1-16 22:43
asm代码不错
但是取不重复随机数的话,无建议是用【交换变量】,随机把数组随机位置的两个成员交换一下位置 ...

你这想法效率也不高 首先不需要交换变量 因为要交换变量你首先得给数组从头到尾赋值一遍  事实上只需要利用好数组下标就够了然后不需要截取其中一段  事实上需要多少个就交换多少个就够了




作者: linlin888    时间: 2021-4-24 22:43
不错!!!!!!!!!!!
作者: 单色    时间: 2021-4-25 09:52
感谢分享,很给力!~




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4