Board logo

标题: [数值计算] 【已解决】批处理怎样随机输出双精数? [打印本页]

作者: ads350668398    时间: 2014-12-5 12:49     标题: 【已解决】批处理怎样随机输出双精数?

本帖最后由 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怎么办到啊???
作者: DAIC    时间: 2014-12-5 13:41

  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
复制代码

作者: ads350668398    时间: 2014-12-5 15:11

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

)
这样不改变01为101有方法吗?
作者: ads350668398    时间: 2014-12-5 18:17

set r=101
当101的值大道一定的时候 输出错误
比如111结果:
16
21
26
31
ECHO 处于关闭状态。
作者: 523066680    时间: 2014-12-5 22:20

少年,头像不错
作者: CrLf    时间: 2014-12-6 06:03

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
复制代码

作者: ads350668398    时间: 2014-12-6 08:09

回复 5# 523066680

呵呵#24
作者: ads350668398    时间: 2014-12-6 08:22

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

如果不嫌麻烦的话,可以增添个临时变量用于存储数字前置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
复制代码

作者: ads350668398    时间: 2014-12-6 10:31

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

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

(29-1+3*4/2)%34=0
作者: DAIC    时间: 2014-12-6 10:39

回复 10# ads350668398


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

回复 12# DAIC

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

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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2