[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] [已解决]批处理如何根据random生成的随机数获取生成时间点?

【假随机】随机到特定数的方法:
知道了了系统的随机变量是有规律的随机后 逆算怎么算啊?
例如:取系统变量0到9随机
      随机到s要在那个时间点上?有几个时间点?
s=0 1 2 3...9
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

随机数确实是有规律的,只有使用for循环进行变异,别无他法,如果第三方则很简单搞出来。
判定一个人是否为伸手党的标准是取决于他的态度和诚意。

TOP

回复 1# ads350668398

TestRandom.bat
  1. @echo off
  2. for /f "delims=" %%r in ('echo %Random%') do set currandom=%%r
  3. for /f "delims=" %%t in ('echo %Time%') do set curtime=%%t
  4. if %currandom% leq 9 echo Get %currandom% at %curtime%
复制代码

TOP

echo off & setlocal enabledelayedexpansion
setlocal enabledelayedexpansion
title 随机数定位
set /p abc=输入要得到的数值
set a=1
set b=99
set /a c=!b!-!a!+1
for /l %%i in (1,1,100) do (
set /a d=!random!%%!c!+!a!
echo.
echo !d!==%abc% %time% >>1-99.txt
)
pause
看见
楼上大神很有启发输出结果 不对啊
例如我想要随机到 1的时候 输出一个时间

TOP

echo off & setlocal enabledelayedexpansion
setlocal enabledelayedexpansion
title 随机数定位
set /p abc=输入要得到的数值
set a=1
set b=99
set /a c=!b!-!a!+1
for /l %%i in (1,1,100) do (
set /a d=!random!%%!c!+!a!
echo.
if /i !d!==%abc%%time%>>1-99.txt
)
pause

傻情况什么都没有了输出 累了

TOP

反正挺蛋疼的,我是放弃了这个功能
判定一个人是否为伸手党的标准是取决于他的态度和诚意。

TOP

我大算高仿真随机数

TOP

回复 7# ads350668398

何必这么麻烦
判定一个人是否为伸手党的标准是取决于他的态度和诚意。

TOP

本帖最后由 Bella 于 2016-10-26 14:15 编辑

你这是要搞事情, 伪随机大多是用时间做种子
来一发真随机, 鼠标怎么有点抖

TOP

本帖最后由 aa77dd@163.com 于 2016-10-26 14:26 编辑

如果一个伪随机函数以时间 t 为自变量, 尽管这个函数算法上是精确的, 如果能知道运行时的 t , 就能确定给出它的结果值, 这一点上确实是所谓 "伪" 随机了.

然而, 问题的关键是, 每次运行这个函数时, 各种不确定因素让你无法确定自变量 t 将会是什么值, 那么这个伪随机函数最终就仍然生成了一个真的随机数.

换言之, 任何精确的伪随机函数, 只要在运行过程中与任何一种不确定的因素相关, 它就会生成真的随机数.

CMD 最简单的方式, 直接取时间的百分秒值, 随机数范围 [0..9]
  1. echo;%time:~-1%
复制代码

TOP

本帖最后由 Bella 于 2016-10-26 15:09 编辑

回复 10# aa77dd@163.com

大师真知灼见
真随机最简单的就是用 两次按键间隔 做种子

TOP

回复 9# Bella


    这个玩意都能拿出手  牛
判定一个人是否为伸手党的标准是取决于他的态度和诚意。

TOP

本帖最后由 huyou96 于 2016-10-26 15:39 编辑

回复 4# ads350668398

TestRandom.bat
  1. @echo off
  2. rem 操作系统自带的动态环境变量(dynamic environment variables)之%Random%会随机生成0至32767的随机数
  3. rem 从该随机产生的结果中获取从0到9的随机数并列印产生该随机数的时间
  4. rem 一旦有符合条件结果产生就终结退出批处理脚本
  5. rem 如果想生成正好等于1的随机数并获取生成1的时间,请使用下面“::”所注释的那条语句
  6. rem 不过可能无法在短时间内产生想要的结果……也许跑上个把钟头也不会生成正好等于1的随机数呢……
  7. :Beginning
  8. echo Please waiting...
  9. for /f "delims=" %%r in ('echo %Random%') do set currandom=%%r
  10. for /f "delims=" %%t in ('echo %Time%') do set curtime=%%t
  11. echo %currandom%
  12. :: if %currandom% equ 1 echo Get %currandom% at %curtime% && goto End
  13. if %currandom% leq 9 echo Get %currandom% at %curtime% && goto End
  14. if %ErrorLevel% equ 0 goto Beginning
  15. :End
复制代码
得到4的结果:

Please waiting...
15711
Please waiting...
26034
Please waiting...
8819
Please waiting...
15731
Please waiting...
24923
Please waiting...
7385
Please waiting...
8941
Please waiting...
7286
Please waiting...
11328
Please waiting...
26791
Please waiting...
3409
Please waiting...
31267
Please waiting...
10729
Please waiting...
25560
Please waiting...
5750
Please waiting...
26825
Please waiting...
20732
Please waiting...
25038
Please waiting...
24140
Please waiting...
31330
Please waiting...
22044
Please waiting...
17643
Please waiting...
31927
Please waiting...
27158
Please waiting...
16224
Please waiting...
5183
Please waiting...
20638
Please waiting...
32513
Please waiting...
19460
Please waiting...
5219
Please waiting...
17727
Please waiting...
3126
Please waiting...
1119
Please waiting...
26532
Please waiting...
453
Please waiting...
12804
Please waiting...
1557
Please waiting...
31076
Please waiting...
14108
Please waiting...
17528
Please waiting...
24718
Please waiting...
14526
Please waiting...
4
Get 4 at 14:27:29.51

(在下午14点27分29秒51这个时间得到了4这个随机数)
1

评分人数

TOP

回复 10# aa77dd@163.com

讃!

學習學習。

TOP

回复 11# Bella

键盘用手敲, 手是人类这种生物的一部分, 人就是一个真随机函数发生器. 另外, 比如: 某一瞬间的内存占用, 磁盘空间占用, 网络延时, ... 这些都是真的随机信息
1

评分人数

    • Bella: 感谢分享技术 + 1

TOP

返回列表