找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33108|回复: 13

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

[复制链接]
发表于 2014-12-5 12:49:30 | 显示全部楼层 |阅读模式
本帖最后由 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怎么办到啊???
发表于 2014-12-5 13:41:37 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2014-12-5 15:11:04 | 显示全部楼层
for /l %%a in (1,1,5) do (
  
    set /a "r=(r-01+03*04/02)%%34"
   
     echo !r!>>随机数.txt

)
这样不改变01为101有方法吗?
 楼主| 发表于 2014-12-5 18:17:29 | 显示全部楼层
set r=101
当101的值大道一定的时候 输出错误
比如111结果:
16
21
26
31
ECHO 处于关闭状态。
发表于 2014-12-5 22:20:05 | 显示全部楼层
少年,头像不错
发表于 2014-12-6 06:03:48 | 显示全部楼层
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
复制代码
 楼主| 发表于 2014-12-6 08:09:10 | 显示全部楼层
回复 5# 523066680

呵呵#24
 楼主| 发表于 2014-12-6 08:22:45 | 显示全部楼层
CrLf
6楼
的确属没有错误
101输出结果:
40
90
41
91
42
这一样就 不在01-33以内了,烦请大侠坐下 小修改#17
发表于 2014-12-6 09:11: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
复制代码
 楼主| 发表于 2014-12-6 10:31:08 | 显示全部楼层
本帖最后由 ads350668398 于 2014-12-6 10:33 编辑

r=33 【01-33的任意数值】
时候 输出10行 为什么有00出现!!! :
04
09
14
19
24
29
00
05
10
15
**********
输出结果为01-33
发表于 2014-12-6 10:36:11 | 显示全部楼层
(29-1+3*4/2)%34=0
发表于 2014-12-6 10:39:41 | 显示全部楼层
回复 10# ads350668398


    谁告诉你 set /a "r=(r-1+3*4/2)%%34" 这个算法可以生成1~33的随机数?或者是你自己瞎想出来的?有什么数学依据吗?
 楼主| 发表于 2014-12-6 11:13:06 | 显示全部楼层
回复 12# DAIC

是的 我瞎想的#17 我的算法有问题 00是我造成的 这个啊
当r=【01-33】
当 r=r-1
输出结果必然有00的出现然后循环 虽然我的问题解决了 但是新的问题出现了 。。只是我还不知道什么是新的问题#17
发表于 2014-12-6 12:07:37 | 显示全部楼层
本帖最后由 amberhill 于 2014-12-6 12:09 编辑
  1. IF !r! LSS 10 (set r=0!r!)
复制代码
小于10的数字前加0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 09:42 , Processed in 0.021096 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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