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

[其他] 【已解决】BAT:多次随机组合不重复的字符,如何控制各字符总数均等

本帖最后由 思想之翼 于 2023-9-3 16:29 编辑

从 00-99 中,随机抽取50个不重复的字符,组成1行,每行50列。
随机1000次,组成1000行,每行50列,共有50000个字符。
在这50000个字符中,若想控制 00 01 02...97 98 99 的每个字符,出现个数均为500个,BAT代码能否实现?

例如:
00 01 02 03...48 49
00 01 02 03...49 50
...
50 51 52 53...98 99

在上述行列中,00共有500个,01共有500个 ... 99共有500个。
1

评分人数

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

本帖最后由 77七 于 2023-9-3 03:35 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set m=100000
  4. %1 (for /f "tokens=2 delims==" %%a in ('%0 rem^|sort') do ((set /p=%%a <nul)&(set /a n+=1,i=n %% 50)&(if !i! equ 0 (echo=))))>1.txt&pause&exit
  5. for /l %%k in (100,1,199) do (
  6.         set str=%%k
  7.         for /l %%l in (1,1,500) do (
  8.                 set /a m+=1
  9.                 echo !random!!m:~-6!=!str:~-2!
  10.         )
  11. )
复制代码

需要30秒
1

评分人数

bat小白,请多指教!谢谢!

TOP

本帖最后由 Five66 于 2023-9-3 17:56 编辑

速度慢而且不准确,已编辑
1

评分人数

TOP

本帖最后由 思想之翼 于 2023-9-3 12:33 编辑

回复 3# Five66
感谢!测试结果正确。如何将结果输出到文本?

TOP

本帖最后由 思想之翼 于 2023-9-3 12:32 编辑

回复 2# 77七
感谢!经测试,从 00-99 中,随机抽取50个不重复的字符组成1行,其中有相同的字符。
比如:
36 49 44 58 44 21...49 50

TOP

本帖最后由 hfxiang 于 2023-9-3 13:44 编辑

回复 5# 思想之翼
出错了(运算到997行,第27个数后,开始严重耗时,无法忍受),已删除,抱歉

TOP

回复 6# hfxiang


   楼主要求每行不重复
bat小白,请多指教!谢谢!

TOP

本帖最后由 hfxiang 于 2023-9-3 13:45 编辑

回复 7# 77七

出错,已删除

TOP

回复 8# hfxiang

观察下最后一行,测试两次,最后一行比较明显
就是每行内的数字不能重复
  
  1. 60 38 38 05 40 38 33 38 12 12 12 64 60 33 60 60 33 12 33 40 33 33 33 40 60 40 12 12 40 33 33 33 33 64 33 64 64 64 40 40 40 64 40 40 40 64 64 64 64 64
复制代码
bat小白,请多指教!谢谢!

TOP

回复 9# 77七
哦,俺得好好再看看

TOP

回复 6# hfxiang

辛苦了,感谢!

TOP

回复 4# 思想之翼


    第49行后面加上重定向的文件就行了
比如将第49行改成:echo;%oput% >>aaaaaaaaaaa.txt
就是输出到当前目录的aaaaaaaaaaa.txt中
还有要注意的:
输出非常非常非常慢(我的渣电脑粗略计算至少要1小时,2秒多1行,越到后面越慢)
输出的文件每行开头有个空格
多次运行时,请将之前输出的文件的删除或改名或移动,不然输出结果会跟之前混在一起(因为同名)

TOP

本帖最后由 Five66 于 2023-9-3 15:08 编辑

回复 4# 思想之翼


    中断执行后发现某些变量变0,试了很多次都复现不能,感觉像是刚好在代码执行赋值那里中断才导致变量变0的,实际代码应该没问题

TOP

回复 13# Five66
感谢!
1.代码在cmd界面运行,停止后,复制到文本,只有898行。
2.>a.txt,只能写入1行就停止了。
3.随机的每行字符不重复,但是1000行整体的字符,不能满足00=500个 01=500个...99=500个

TOP

回复 14# 思想之翼



    1 应该是显示的行数达到cmd窗口界面的上限了,之前的被覆盖了
    2 重定向 >a.txt 是在那里用的?代码里的话必须用 >>a.txt 只有在cmd界面里才能用,不过代码有pause,cmd里界面用的话可能不准确
    3 这个有点难搞,举几个例子吧,比如那些数字不足,我再看看

TOP

返回列表