{}批随机不工作? [英] {BATCH} Random Not Working?

查看:156
本文介绍了{}批随机不工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

更新

解决方案发现,工作code:

 关闭@echo
颜色F0
标题出生日期发生器:开始    REM设定电流年(公元不能超过当年)
    FOR / F标记= 1 delims = - %%的('回声%日期%')做克(
        设置cYear = %%摹
    )        REM年
        集/年=(%RANDOM%%%%cYear%)+ 1            REM闰年检查
            集/mod=%,比去年%%% 4
            如果MOD%%== 0(
                设置JY = 1
            )其他(
                设置JY = 0
            )    REM月
    集/月=(%RANDOM%%% 12)+ 1        REM定义最大天的时间在一个月
        如果%,当月%== 1套DM = 31
        如果%,当月%== 3组DM = 31
        如果%,当月%== 5集DM = 31
        如果%,当月%== 7集DM = 31
        如果%,当月%== 8集DM = 31
        如果%,当月%== 10集DM = 31
        如果%,当月%== 12集DM = 31            REM月
            如果%,当月%== 2%,如果JY%== 1(
                一套DM = 29
            )其他(
                一套DM = 28
            )
            一套DM = 30
            如果%,当月%LSS 10集月= 0%,当月%    REM日
    组/天=(%RANDOM%%%%DM%)+ 1
    如果一天%LSS%10集天= 0%一天%    REM编译日期
    CLS
    回声格式:DD / MM / YYYY
    设置CDATE =%一天%/%,当月%/%,比去年%
    回声%CDATE%
    暂停> NUL
    转到开始

旧帖子(原来的问题,原来的code


  

这code被认为能产生一个随机日期考虑到
  考虑天在一个月的量,如果它是一个闰年。
  问题是,在%随机%变量似乎并没有奏效?
  当我生成一个随机一个月,它总是在我的桌面上生成02
  06我的笔记本电脑......我试过code的禁用部分甚至
  重新设计随机月生成过程。任何想法会
  大大AP preciated!

 关闭@echo
颜色F0
标题出生日期发生器
:开始
FOR / F标记= 1 delims = - %%的('回声%日期%')做克(
设置cyear = %%摹

集/mod=%cyear%%% 4
如果MOD%%== 0(
设置JY = 1
)其他(
设置JY = 0
)集/一个星期一=%RANDOM%*(12 - 1 + 1)/ 32768 + 1
如果周一%==%1套DM = 31
如果周一%==%3组DM = 31
如果周一%==%5套DM = 31
如果周一%==%7集DM = 31
如果周一%==%8集DM = 31
如果周一%==%10集DM = 31
如果周一%==%12集DM = 31
如果周一%==%,如果2%JY%== 1(
一套DM = 29
)其他(
一套DM = 28

如果周一%LSS%10集星期一= 0%星期一%
回声%月%
暂停集/ A D =%RANDOM%*(%DM% - 1 + 1)/ 32768 + 1



解决方案

试试这个,模量是在您的情况要好得多:

 设置/一个星期一=%RANDOM%%% 12 + 1

UPDATE

Solution Found, working code:

@echo off
color f0
title Date Of Birth Generator

:begin

    REM Setting Current Year (Year Cannot Surpass Current Year)
    for /f "tokens=1 delims=-" %%g in ('echo %date%') do (
        set cYear=%%g
    )   

        REM Year
        set /a year=(%RANDOM% %% %cYear%) + 1

            REM Leap Year Check
            set /a mod=%year% %% 4
            if %mod%==0 (
                set jy=1
            ) else (
                set jy=0
            )



    REM Month
    set /a month=(%RANDOM% %% 12) + 1

        REM Define The Maximum Days In Random Month
        if %month%==1 set dm=31
        if %month%==3 set dm=31
        if %month%==5 set dm=31
        if %month%==7 set dm=31
        if %month%==8 set dm=31
        if %month%==10 set dm=31
        if %month%==12 set dm=31

            REM February
            if %month%==2 if %jy%==1 (
                set dm=29
            ) else (
                set dm=28
            )
            set dm=30
            if %month% LSS 10 set month=0%month%

    REM Day
    set /a day=(%RANDOM% %% %dm%) + 1
    if %day% LSS 10 set day=0%day%

    REM Compile Date
    cls
    echo Format: DD/MM/YYYY
    set cDate=%day%/%month%/%year%
    echo %cDate%
    pause>nul
    goto begin

Old Post (original question, original code

This code is supposed to generate a random date taking into consideration the amount of days in a month and if it is a leap year. The problem is, the %random% variable does not seem to be working? When I generate a random month, it always generates 02 on my desktop and 06 on my laptop... I've tried disabling parts of the code and even redesigning the random month generation process. Any ideas would be greatly appreciated!

@echo off
color f0
title Date Of Birth Generator
:begin
for /f "tokens=1 delims=-" %%g in ('echo %date%') do (
set cyear=%%g
)
set /a mod=%cyear% %% 4
if %mod%==0 (
set jy=1
) else (
set jy=0
)

set /a mon=%RANDOM% * (12 - 1 + 1) / 32768 + 1
if %mon%==1 set dm=31
if %mon%==3 set dm=31
if %mon%==5 set dm=31
if %mon%==7 set dm=31
if %mon%==8 set dm=31
if %mon%==10 set dm=31
if %mon%==12 set dm=31
if %mon%==2 if %jy%==1 (
set dm=29
) else (
set dm=28
)
if %mon% LSS 10 set mon=0%mon%
echo %mon%
pause

set /a d=%RANDOM% * (%dm% - 1 + 1) / 32768 + 1

解决方案

Try this, the Modulus is much better in your scenario:

set /a mon=%RANDOM% %% 12 + 1

这篇关于{}批随机不工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆