Author Topic: RND() in Konsolenanwendungen  (Read 2773 times)

Offline Topzombie

  • Mc. Print
  • *
  • Posts: 17
    • View Profile
RND() in Konsolenanwendungen
« on: 2010-Mar-02 »
RND() gibt bei Konsolenanwendungen immer die gleiche Zahl aus   :help:
Hier ist ein Beispielprogramm:

Code: (glbasic) [Select]
// --------------------------------- //
// Project: Name Generator
// Start: Tuesday, March 02, 2010
// IDE Version: 7.250


// SETCURRENTDIR("Media") // seperate media and binaries?
INIOPEN "names.txt"
GLOBAL FEname$, MAname$, FAMname$
GLOBAL FEcount, MAcount, FAMcount
FEcount=INIGET$("Female", "Count")
MAcount=INIGET$("Male", "Count")
FAMcount=INIGET$("Family", "Count")
DIM FEnameList$[1000]
DIM MAnameList$[1000]
DIM FAMnameList$[1000]
FOR I=0 TO INIGET$("Female", "Count")-1
FEnameList$[I]=INIGET$("Female",I)
NEXT
FOR I=0 TO INIGET$("Male", "Count")-1
MAnameList$[I]=INIGET$("Male",I)
NEXT
FOR I=0 TO INIGET$("Family", "Count")-1
FAMnameList$[I]=INIGET$("Family",I)
NEXT
FEname$=FEnameList$[RND(FEcount-1)+1]
MAname$=MAnameList$[RND(MAcount-1)+1]
FAMname$=FAMnameList$[RND(FAMcount-1)+1]
STDOUT "Female Name: "+FEname$+" "+FAMname$+"\n"
STDOUT "Male Name: "+MAname$+" "+FAMname$+"\n"
STDOUT "Press any key to continue \n"
///PRINT "Female Name: "+FEname$+" "+FAMname$, 10, 10
///PRINT "Male Name: "+MAname$+" "+FAMname$, 10, 50
///SHOWSCREEN
KEYWAIT

Das fertig kompilierte Programm mit dem names.txt gibts hier: http://remixshare.com/dl/9e67v/Name Generator.app.zip

Wenn ich das Programm als ein "Fensterprogramm" kompiliere dann funktioniert es, aber ich brauche eine Konsolenanwendung  :|
Meine GLBasic Version ist 7.250

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5056
  • O Rly?
    • View Profile
Re: RND() in Konsolenanwendungen
« Reply #1 on: 2010-Mar-02 »
Quote
SEEDRND start%
Initialisiert den Zufallszahlgenerator für RND() mit einem Startwert. Beim Programmstart verwendet GLBasic SEEDRND(GETTIMERALL()).
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Topzombie

  • Mc. Print
  • *
  • Posts: 17
    • View Profile
Re: RND() in Konsolenanwendungen
« Reply #2 on: 2010-Mar-02 »
Das hab ich auch schon gelesen aber es hat mich nicht weitergebracht   :(
Edit: Würde es funktionieren wenn ich statt GETTIMERALL() die Systemzeit einfüge?
« Last Edit: 2010-Mar-02 by Topzombie »

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5056
  • O Rly?
    • View Profile
Re: RND() in Konsolenanwendungen
« Reply #3 on: 2010-Mar-02 »
versuchs einfach mal...
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Topzombie

  • Mc. Print
  • *
  • Posts: 17
    • View Profile
Re: RND() in Konsolenanwendungen
« Reply #4 on: 2010-Mar-02 »
Ja es hat funktioniert
Code: (glbasic) [Select]
SEEDRND MID$(PLATFORMINFO$("time"), 17, 2)
ps: Hattest du heute nen schlechten Tag oder so?
« Last Edit: 2010-Mar-02 by Topzombie »

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5056
  • O Rly?
    • View Profile
Re: RND() in Konsolenanwendungen
« Reply #5 on: 2010-Mar-03 »
Ne du, war in der Arbeit und da sollte man nicht so "Privat" auf Seiten rumspringen :D
Waren grad lange Tage ;)
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Topzombie

  • Mc. Print
  • *
  • Posts: 17
    • View Profile
Re: RND() in Konsolenanwendungen
« Reply #6 on: 2010-Mar-03 »
Ja das verstehe ich...   :D

Nochmal zu SEEDRND
Code: (glbasic) [Select]
SEEDRND MID$(PLATFORMINFO$("time"), 17, 2)
Das funktioniert zwar teilweise aber es kommen trotzdem oft die gleichen Ergebnisse.
Gibt es dafür eine bessere Lösung?   O_O

Edit:
Ich habs  :enc:

Code: (glbasic) [Select]
LOCAL TickCount
INLINE
DECLARE_C_ALIAS(GLBGetTickCount,"kernel32.dll", "GetTickCount",(),int);
TickCount = GLBGetTickCount();
ENDINLINE
SEEDRND TickCount
« Last Edit: 2010-Mar-10 by Topzombie »

Offline Topzombie

  • Mc. Print
  • *
  • Posts: 17
    • View Profile
Re: RND() in Konsolenanwendungen
« Reply #7 on: 2010-Mar-10 »
Sry. Doppelpost

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5056
  • O Rly?
    • View Profile
Re: RND() in Konsolenanwendungen
« Reply #8 on: 2010-Mar-11 »
Sauber :)
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard