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

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

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

评分人数

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

看的是生成的时间,并没有所谓的"真随机"

TOP

看的是生成的耗时

TOP

马上出赖了 都要给点 困难 这个是咋回事啊 晕菜中

TOP

最接近随机数时间点的代码应该是这个
  1. for /f "delims=" %%r in ('cmd.exe /c echo,%Random%^| wmic.exe path Win32_Process where name^="cmd.exe" get CommandLine^,CreationDate /format:list')do (
  2. echo,%%r
  3. )
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 30# 523066680


    21楼 怎么也不能错那里了啊晕

TOP

本帖最后由 523066680 于 2016-10-28 17:21 编辑

回复 29# ads350668398


    该批处理中的坑太多(逃

TOP

回复 28# 523066680

@echo off
setlocal enabledelayedexpansion
set aa=1 2 3 4 5 6 7 8 9
:Beginning
echo Please waiting...
for /f "delims=" %%r in ('echo %aa%') do set currandom=%%r
for /f "delims=" %%t in ('echo %Time%') do set curtime=%%t
echo %currandom%>>1ddd.txt
if %currandom% equ 1 echo Get %currandom% at %curtime% && goto end
::if %currandom% leq 9 echo Get %currandom% at %curtime% && goto End
if %ErrorLevel% equ 0 goto Beginning
:End

不好意思 上面的确 谢谢 指点
这样都做了还是不行 为啥 了晕

TOP

本帖最后由 523066680 于 2016-10-28 15:10 编辑

回复 27# ads350668398

    从你的代码看感觉基本功不扎实有些走火入魔。

  1.     echo off
  2. setlocal enabledelayedexpansion
  3. set aa=1 2 3 4 5 6 7 8 9
  4. set aa=%aa%
  5. :Beginning
  6. echo Please waiting...
  7. for /f "delims=" %%r in ('echo %!aa!%') do set currandom=%%r
  8. for /f "delims=" %%t in ('echo %Time%') do set curtime=%%t
  9. echo %currandom%>>1ddd.txt
  10. if %currandom% equ 1 echo Get %currandom% at %curtime% && goto end
  11. ::if %currandom% leq 9 echo Get %currandom% at %curtime% && goto End
  12. if %ErrorLevel% equ 0 goto Beginning
  13. :End
  14. )
复制代码


问题:
1. echo off 前面的空格是干嘛的? 一般都是 @echo off
2. 为什么 set aa=%aa% set完之后 aa 不还是原来的样子么?
3. echo %!aa!% 要干嘛?
4. 最后多出来的右括号是怎么回事?

建议:
1. 可以再看一些论坛的实例。一定要看风格好的,乱的别看。
2. 推荐学ruby

TOP

回复 25# 523066680


    这个是批处理么 怎么运行?
请帮忙看下我在 21   23楼是错误的地方 谢

TOP

回复 24# happy886rr


    这个以前看过
还是帮我看看下上面那里错勿了啊 谢谢

TOP

本帖最后由 523066680 于 2016-10-28 10:08 编辑
  1. #include <stdio.h>
  2. #include <omp.h>
  3. int main(int argc, char *argv[] )
  4. {
  5.     #pragma omp parallel num_threads(100)
  6.     {
  7.         printf("Thread %d\n", omp_get_thread_num() );
  8.     }
  9.     return 0;
  10. }
复制代码
输出0-99不重复,随机强度不大  (逃

TOP

本帖最后由 happy886rr 于 2016-10-28 09:31 编辑

回复 23# ads350668398
标题: 批处理技术内幕:随机数%RANDOM%
链接: http://demon.tw/reverse/cmd-internal-random.html
cmd家的都是这么算的,
((ptd->_holdrand = ptd->_holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
虽然随机性很糟糕,但快。模拟真随机需要矩阵转置算法加RAS映射变换,但速度非常缓慢。

TOP

回复  ads350668398

TestRandom.bat得到4的结果:

Please waiting...
15711
Please waiting...
2 ...
huyou96 发表于 2016-10-26 14:43



    echo off
setlocal enabledelayedexpansion
set aa=1 2 3 4 5 6 7 8 9
set aa=%aa%
:Beginning
echo Please waiting...
for /f "delims=" %%r in ('echo %!aa!%') do set currandom=%%r
for /f "delims=" %%t in ('echo %Time%') do set curtime=%%t
echo %currandom%>>1ddd.txt
if %currandom% equ 1 echo Get %currandom% at %curtime% && goto end

::if %currandom% leq 9 echo Get %currandom% at %curtime% && goto End
if %ErrorLevel% equ 0 goto Beginning

:End
)

系统随机变量修改为什么不成功 显示ECHO 处于打开状态。

TOP

本帖最后由 ads350668398 于 2016-10-26 17:15 编辑

我的一直错误所以。。请勿在扣分了晕
为什么 我的问题都要绕弯路 获得解决呢 答案对 是次要的 要成长我要的过程
例如今天我凑来的代码 看思路也能解决但是。。没人看
直接1+1=2
学无止境啊

TOP

返回列表