Gå til innhold

[Løst]Batch, Få et random tall mellom 1 og 6 i ei batch-fil


Anbefalte innlegg

Videoannonse
Annonse

Om dette skal brukes til å angi ett filnavn etc. Så kan du bruke løkke for å finne ut når du kommer til ett ledig tall.

Men vil ikke tro att du finner noen orginale tilfeldig tall algoritme/prosedyre i batch, ettersom dette ikke er noe avansert skripteverktøy.

Lenke til kommentar
set /a rnd=%random% / 5666
set /a rdn=%rdn% + 1
echo ett random tall mellom 1 og 6: %rnd%
set RDN=

 

 

aklla redder dagen som vanlig... :):p

 

Vet at det ikke var jeg som startet denne posten, men vil bare si tusen takk for informasjonen / koden / svar.. whatever, du skjønner hva jeg mener. :)

Lenke til kommentar

har windows- maskina ved siden av meg nå, men jeg får alltid tallet 2.

Jeg tenkte å bruke den som f.eks. terning og da er jeg avhengig av at den skifter tall hver gang jeg åpner den.

jeg bruker denne koden:

 

@echo off
set /a rnd=%random% / 5666
set /a rdn=%rdn% + 1
echo ett random tall mellom 1 og 6: %rnd%
set RDN=
pause >nul

Endret av adrianpip2000
Lenke til kommentar

hmm, merkelig...

ser ut til at det på en eller annen måte har sneket seg inn en leif der, samt en bug i %random% jeg ikke har sett før...

men, her kommer en med en liten fix

 

@echo off
set random=
set /a rnd=%random% / 5666
set /a rnd=%random% / 5666
set /a rnd=%rnd% + 1
echo ett random tall mellom 1 og 6: %rnd%
set rnd=
pause >nul

 

det funka bra når jeg testet det hele som en loop med det forrige scriptet, men ser ut til at den husker hva som kom sist gang på en eller annen merkelig måte når man kjører scriptet 1 gang...

Endret av aklla
Lenke til kommentar

Det funka de to første gangene men så kom det samme igjen. tenkte at det hadde noe med at det står

 set /a rnd=%random% / 5666

bare to ganger og da jeg la inn dette 6 ganger så funket det. altså:

 

@echo off
set random=
set /a rnd=%random% / 5666
set /a rnd=%random% / 5666
set /a rnd=%random% / 5666
set /a rnd=%random% / 5666
set /a rnd=%random% / 5666
set /a rnd=%random% / 5666

set /a rnd=%rnd% + 1
echo ett random tall mellom 1 og 6: %rnd%
set rnd=
pause >nul

Endret av adrianpip2000
Lenke til kommentar

egentlig skal den kun stå 1 gang, jeg har sett på saken uten @echo off, da ser det helt greit her med bare 2 ganger.

 

hvor tilfeldig %random% er vet jeg ikke, kan være det er en veldig dårlig generator av tilfeldige tall som gjør at det tilsynelatende funker bedre med 6 ganger...

men, ser ingenting galt med å ha den 6 ganger.

 

evt. er det varmen som gjør det :p

 

edit: har testet med litt lengre tid imellom hver gang, da ser det mye mer tilfeldig ut igjen, antagelig henter %random% tallene ut fra ett eller annet med tid...

Endret av aklla
Lenke til kommentar

Mere av denne tiden kunne vært brukt på og lære ser et ordentlig språk.

Har ikke noe mot batch,brukt det til mange oppgaver opp imellom årene.

Men stopper fort opp ønsker man og løse oppgaver av denne type og man lærer ikke så mye av plundere med dette i batch.

 

Tar bare kjapt denne oppgaven i python.

 

import random
print 'Et random tall mellom 1 og 6:', random.randrange(1, 7)

 

Muligheten blir så mye større med et fullverdig språk,tør ikke tenke på hvordan dette hadde sett ut viss du ville implementer flere funksjoner.

Skriver noen linjer til når jeg først er i gang så har man en GUI løsning.

441037.jpeg

Endret av SNIPPSAT
Lenke til kommentar

jepp, python er nok bedre.

men hvorfor i all verden skal jeg bruke haugevis med tid på ett språk jeg ikke kan, spesiellt når jeg ikke har interessen av å lære noe nytt innen programering/scripting lengre...

jeg gjør slike ting kun for å være snill, personlig synes jeg ikke det er verken morro eller utfordrende.

 

 

jeg får slike komentarer ca hver gang jeg lager ett script her for tiden, begynner å bli lei hele greia her.

jobbet mye med c++ en gang i tiden, men ble lei alt som har med programmering/scripting

Lenke til kommentar
Mere av denne tiden kunne vært brukt på og lære ser et ordentlig språk.

Har ikke noe mot batch,brukt det til mange oppgaver opp imellom årene.

Men stopper fort opp ønsker man og løse oppgaver av denne type og man lærer ikke så mye av plundere med dette i batch.

 

Tar bare kjapt denne oppgaven i python.

 

import random
print 'Et random tall mellom 1 og 6:', random.randrange(1, 7)

 

Muligheten blir så mye større med et fullverdig språk,tør ikke tenke på hvordan dette hadde sett ut viss du ville implementer flere funksjoner.

Skriver noen linjer til når jeg først er i gang så har man en GUI løsning.

441037.jpeg

 

Jeg vet dette, men for øyeblikket er jeg på ferie med en pc som ikke er min. Skal nok lære meg python når jeg kommer hjem til min egen pc :!:

Endret av adrianpip2000
Lenke til kommentar
men hvorfor i all verden skal jeg bruke haugevis med tid på ett språk jeg ikke kan, spesiellt når jeg ikke har interessen av å lære noe nytt innen programering/scripting lengre...

jeg gjør slike ting kun for å være snill, personlig synes jeg ikke det er verken morro eller utfordrende.

Ja ikke ment Spesielt på deg denne posten.

Mere at batch kansje ikke er så enkelt som mang tror til denne type oppgaver.

Det finnes aternativer som python,som gjør dette enkelt.

 

Skjønner at du blir lei,er sånn i alle programmering forum.

Batch er noe som blir hakket på,noen ganger er det grunn til det andre ganger er det ikke det.

 

Trådstarter sprør om en løsning i batch og der har du kommet med det rette svaret i denne posten uten tvil.

 

Beklager viss dette var forstyrrende.

Endret av SNIPPSAT
Lenke til kommentar
men hvorfor i all verden skal jeg bruke haugevis med tid på ett språk jeg ikke kan, spesiellt når jeg ikke har interessen av å lære noe nytt innen programering/scripting lengre...

jeg gjør slike ting kun for å være snill, personlig synes jeg ikke det er verken morro eller utfordrende.

Ja ikke ment Spesielt på deg denne posten.

Mere at batch kansje ikke er så enkelt som mang tror til denne type oppgaver.

Det finnes aternativer som python,som gjør dette enkelt.

 

Skjønner at du blir lei,er sånn i alle programmering forum.

Batch er noe som blir hakket på,noen ganger er det grunn til det andre ganger er det ikke det.

 

Trådstarter sprør om en løsning i batch og der har du kommet med det rette svaret i denne posten uten tvil.

 

Beklager viss dette var forstyrrende.

 

 

Litt forstyrrende ja! :p

 

Vi er på ( windows-programering (DOS, Win16, Win32 ) og trådstarter spør et klart spørsmål om hvordan mann får "random tall mellom 1 og 6 i ei batch-fil . Jeg skjønner hva du mener SNIPPSAT. Det er sikkert enklere og bedre måter å gjøre det på, men det er ikke nødvendig å komme med forslag til andre programeringsmåter osv på denne delen av forumet.

 

Vi holder oss til det trådstarter spør om. :)

Lenke til kommentar
  • 1 måned senere...

vet det står "[Løst]", men det er ikke en god løsning her :p

@echo off
cls
:begin
set /A x=%RANDOM%%%7%
echo %x%
goto begin

(og 7 betyr UNDER 7, aka 0-6

og hvis du ikke vil ha 0,

:random16
set /A x=%RANDOM%%%7%
if %x% == 0 goto random16
:: now x is between 1-6 :p

)

og dette funker IKKE med

echo %RANDOM%%%7% eller rem %RANDOM%%%7%, det må brukes med "set" for og funke, og det funker ikke i "console", det må kjøres fra .bat/.cmd

(aner ikke hva MS programmererne tenkte når de lagde det sån :p)

Endret av Hans_Henrik
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...