设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 2567|回复: 3
收起左侧

易语言 仅需十几毫秒实现快速生成1~32767不重复短整数型随机数数组表 (随机打乱洗牌)

[复制链接]
发表于 2020-4-9 22:00:54 | 显示全部楼层 |阅读模式
本帖最后由 CNWTEPRG 于 2020-4-9 21:59 编辑

1.png
* “耗时(毫秒):” | 9.672000
* 数组:100{19,13,38,74,32,52,49,75,28,98,67,100,3,20,70,90,6,39,45,87,46,27,92,50,44,79,5,9,17,30,96,7,78,23,18,40,2,42,53,68,12,41,83,82,47,65,81,14,55,63,22,54,95,72,64,57,33,10,77,35,4,71,84,60,59,91,85,97,8,99,94,21,31,93,69,25,86,43,26,61,51,66,11,89,34,56,76,29,15,37,48,16,62,88,80,73,24,58,1,36}


  1. .版本 2
  2. .支持库 spec

  3. .程序集 程序集1

  4. .子程序 _启动子程序, 整数型

  5. 置随机数种子 ()
  6. _临时子程序 ()
  7. 返回 (0)

  8. .子程序 _临时子程序
  9. .局部变量 数组, 短整数型, , "0"
  10. .局部变量 时间, 整数型
  11. .局部变量 A, 短整数型
  12. .局部变量 B, 短整数型

  13. 时间 = 取启动时间 ()
  14. .计次循环首 (1000, )
  15.     取不重复短随机数表 (32767, 数组)
  16. .计次循环尾 ()
  17. 调试输出 (“耗时(毫秒):”, (取启动时间 () - 时间) ÷ 1000)
  18. 取不重复短随机数表 (100, 数组)
  19. 调试输出 (数组)

  20. .子程序 取不重复短随机数表, 逻辑型, 公开, 快速产生一个从1到指定值的,不重复随机数数组,成功返回真失败返回假
  21. .参数 数量, 短整数型, , 必须大于等于1,使用短整数因为 取随机数() 最大只支持32767
  22. .参数 数组变量, 短整数型, 参考 数组, 数组将通过此变量传出
  23. .局部变量 计数, 整数型
  24. .局部变量 随机数, 短整数型

  25. .判断开始 (数量 ≤ 0)
  26.     返回 (假)
  27. .判断 (取数组成员数 (数组变量) ≠ 数量)
  28.     重定义数组 (数组变量, 真, 数量)
  29. .默认

  30. .判断结束
  31. 置入代码 ({ 80, 83, 81, 82, 139, 69, 12, 139, 0, 139, 88, 4, 131, 192, 8, 51, 201, 102, 186, 1, 0, 235, 7, 102, 137, 20, 72, 65, 102, 66, 59, 203, 114, 245, 90, 89, 91, 88 })
  32. ' push eax
  33. ' push ebx
  34. ' push ecx
  35. ' push edx
  36. ' mov eax,[ebp+12]
  37. ' mov eax,[eax]
  38. ' mov ebx,[eax+4]
  39. ' add eax,8
  40. ' xor ecx,ecx
  41. ' mov dx,1
  42. ' .while ecx < ebx
  43. ' mov [eax+ecx*2],dx
  44. ' inc ecx
  45. ' inc dx
  46. ' .endw
  47. ' pop edx
  48. ' pop ecx
  49. ' pop ebx
  50. ' pop eax
  51. .计次循环首 (数量, 计数)
  52.     .循环判断首 ()
  53.         随机数 = 取随机数 (1, 数量)
  54.     .循环判断尾 (随机数 = 计数 且 数量 > 2)
  55.     交换短整数 (数组变量 [计数], 数组变量 [随机数])
  56. .计次循环尾 ()
  57. 返回 (真)


  58. .子程序 交换短整数
  59. .参数 A, 短整数型, 参考
  60. .参数 B, 短整数型, 参考

  61. 置入代码 ({ 96, 139, 69, 8, 139, 93, 12, 102, 139, 8, 102, 139, 19, 102, 137, 16, 102, 137, 11, 97 })
  62. ' pusha
  63. ' mov eax,[ebp+8]
  64. ' mov ebx,[ebp+12]
  65. ' mov cx,[eax]
  66. ' mov dx,[ebx]
  67. ' mov [eax],dx
  68. ' mov [ebx],cx
  69. ' popa


复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-20 02:29 , Processed in 0.547031 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表