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

[数值计算] 【已解决】批处理怎样随机输出双精数?

本帖最后由 ads350668398 于 2014-12-6 11:13 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set r=01
  3. ::for /l %%a in (101,1,105) do (
  4. for /l %%a in (101,01,105) do (
  5.   
  6.     set /a "r=(r-01+03*04/02)%%34"
  7.    
  8.      echo !r!>>随机数.txt
  9. )
复制代码
输出结果为:
6
11
16
21
26
我想要的是:
06
11
16
21
26
************
以上我是想把输出的结果 变为06  而不是6怎么办到啊???

本帖最后由 amberhill 于 2014-12-6 12:09 编辑
  1. IF !r! LSS 10 (set r=0!r!)
复制代码
小于10的数字前加0

TOP

回复 12# DAIC

是的 我瞎想的#17 我的算法有问题 00是我造成的 这个啊
当r=【01-33】
当 r=r-1
输出结果必然有00的出现然后循环 虽然我的问题解决了 但是新的问题出现了 。。只是我还不知道什么是新的问题#17

TOP

回复 10# ads350668398


    谁告诉你 set /a "r=(r-1+3*4/2)%%34" 这个算法可以生成1~33的随机数?或者是你自己瞎想出来的?有什么数学依据吗?

TOP

(29-1+3*4/2)%34=0

TOP

本帖最后由 ads350668398 于 2014-12-6 10:33 编辑

r=33 【01-33的任意数值】
时候 输出10行 为什么有00出现!!! :
04
09
14
19
24
29
00
05
10
15
**********
输出结果为01-33

TOP

如果不嫌麻烦的话,可以增添个临时变量用于存储数字前置0的字符串,然后对字符串进行截取输出。
  1. @echo off&setlocal enabledelayedexpansion
  2. set r=1
  3. for /l %%a in (1,1,5) do (
  4.   
  5.     set /a "r=(r-1+3*4/2)%%34"
  6.     set strR=0000!r!
  7.    
  8.     echo !strR:~-2!>>随机数.txt
  9. )
  10. pause
复制代码

TOP

CrLf
6楼
的确属没有错误
101输出结果:
40
90
41
91
42
这一样就 不在01-33以内了,烦请大侠坐下 小修改#17

TOP

回复 5# 523066680

呵呵#24

TOP

2 楼方案应该是最好的了,不过楼主如果不想设置百位,也可以这样:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set r=101
  4. (for /l %%a in (101,1,105) do (
  5.     set /a "r=(r-1+3*4/2)%%34,r1=r%%10,r2=r/10"
  6.     echo !r1!!r2!
  7. ))>随机数.txt
复制代码

TOP

少年,头像不错

TOP

set r=101
当101的值大道一定的时候 输出错误
比如111结果:
16
21
26
31
ECHO 处于关闭状态。

TOP

for /l %%a in (1,1,5) do (
  
    set /a "r=(r-01+03*04/02)%%34"
   
     echo !r!>>随机数.txt

)
这样不改变01为101有方法吗?

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set r=101
  4. (for /l %%a in (101,1,105) do (
  5.     set /a "r=(r-1+3*4/2)%%134"
  6.     echo !r:~1!
  7. ))>随机数.txt
复制代码

TOP

返回列表