Kom ihåg mig?
Home Menu

Menu


5 siffror i slumpmässig ordning? asp.net c#

 
Ämnesverktyg Visningsalternativ
Oläst 2012-12-02, 23:05 #11
yakuzaemmes avatar
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2012
Inlägg: 773
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
yakuzaemmes avatar
 
Reg.datum: Jun 2012
Inlägg: 773
Conny, hur menar du att Random() ger samma resultat om man kör det igen? Du måste inte ge något frö för att det inte ska bli samma som förut, och du behöver heller inte specificera Environment.Tickcount, för den är redan baserad på tid.
yakuzaemme är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-12-02, 23:11 #12
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Fast du får nog kolla dokumentationen en gång till i Ruby, för jag sökte på: "Ruby Random Seed" och hittade följande artikel: http://www.ruby-forum.com/topic/158679

Där en programmerare hade konstaterat vad jag befarade skulle hända. Upprepade slumptal, när Random anropas flera gånger.
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-12-02, 23:14 #13
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Citat:
Ursprungligen postat av ConnyWesth Visa inlägg
Fast du får nog kolla dokumentationen en gång till i Ruby, för jag sökte på: "Ruby Random Seed" och hittade följande artikel: http://www.ruby-forum.com/topic/158679

Där en programmerare hade konstaterat vad jag befarade skulle hända. Upprepade slumptal, när Random anropas flera gånger.
Artikeln är 4 år gammal, alltså Ruby 1.8.x, inte 1.9.x
Nerix är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-12-02, 23:18 #14
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Citat:
Ursprungligen postat av yakuzaemme Visa inlägg
Conny, hur menar du att Random() ger samma resultat om man kör det igen? Du måste inte ge något frö för att det inte ska bli samma som förut, och du behöver heller inte specificera Environment.Tickcount, för den är redan baserad på tid.
Ja, så är det. random måste initieras med ett frö som man tvingar vara oregelbundet annars kommer slumpserien att riskera att upprepas vid flera anrop. Bland annat måste du som jag exepmplifierat skriva seed++ i anropet till random så att det vid extremt hög anropsfrekvens ska vara garanterat olika frö.

Detta är inget ovanligt utan så har alla programspråk fungerat sedan jag först började programmera på slutet av 1970-talet. Nu har jag även konstaterat att Ruby inte är något undantag utan man måste initiera med ett "frö" för att hindra att slumpserien upprepas, det är fortfarande ingen garanti att talet är slumpmässigt men det är det bästa man kan åstadkomma i datorn idag.

Sök på "Random seed" på internet så hittar du säkert massvis med artiklar just om detta fenomen.
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-12-02, 23:30 #15
yakuzaemmes avatar
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2012
Inlägg: 773
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
yakuzaemmes avatar
 
Reg.datum: Jun 2012
Inlägg: 773
Citat:
Ursprungligen postat av ConnyWesth Visa inlägg
Ja, så är det. random måste initieras med ett frö som man tvingar vara oregelbundet annars kommer slumpserien att riskera att upprepas vid flera anrop. Bland annat måste du som jag exepmplifierat skriva seed++ i anropet till random så att det vid extremt hög anropsfrekvens ska vara garanterat olika frö.
Du skrev:
"Ge samma resultat om man startar om programmet och kör igen. Det är det normala i de flesta pogramspråk."

Vilket inte är sant. Skulle jag kopiera din kod och köra den två gånger i rad så finns det inte en chans i världen att det skulle bli samma resultat. Du får mer "säkerhet" genom att ange ett frö, eftersom ingenting är helt slumpmässigt (logiskt?), men TS behöver verkligen inte ange ett frö, och därför behöver du inte kommentera det, eller påstå att han måste/bör det.
yakuzaemme är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-12-02, 23:33 #16
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Här är en mer aktuell artikel om Ruby: http://ruby.about.com/od/newinruby19...rs-In-Ruby.htm

Men observera att jag inte tycker Ruby är "sämre" eller dåligt på att hantera slumptal, det är datorn som hårdvara som sätter gränsen för hur slumpmässigt ett ta l kan vara, så samma förutsättningar gäller för alla programspråk som körs på samma dator.

Citat:
It can be useful in a range programs, typically games and simulations, to generate random numbers. While no computer can generate truly random numbers, Ruby does provide access to a method that will return pseudorandom numbers.

Not Exactly Random
No computer can generate truly random numbers purely by computation. The best they can do is to generate pseudorandom numbers, a sequence of numbers that appears random but is not random. To a human observer, these numbers are indeed random. There will be no short repeating sequences, and, at least to the human observer, be completely random. However, given enough time and motivation, the original seed can be discovered, the sequence recreated and the next number in the sequence guessed. For this reason, the methods discussed in this article should probably not be used to generate numbers that must be cryptographically secure.

As mentioned above, pseudorandom number generators PRNGs must be seeded in order to produce sequences that differ each time a new random number is generated. Remember that no method is magical, these seemingly random numbers are generated using relatively simple algorithms using relatively simple arithmetic. By seeding the PRNG, you're starting it off at a different point every time. If you didn't seed it, it would generate the same sequence of numbers each time. But, at least in Ruby, the developers have thought of this.
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-12-02, 23:48 #17
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Citat:
Ursprungligen postat av yakuzaemme Visa inlägg
Du skrev:
"Ge samma resultat om man startar om programmet och kör igen. Det är det normala i de flesta pogramspråk."

Vilket inte är sant. Skulle jag kopiera din kod och köra den två gånger i rad så finns det inte en chans i världen att det skulle bli samma resultat. Du får mer "säkerhet" genom att ange ett frö, eftersom ingenting är helt slumpmässigt (logiskt?), men TS behöver verkligen inte ange ett frö, och därför behöver du inte kommentera det, eller påstå att han måste/bör det.
Du borde kanske läsa på lite bättre vad slumpmässighet är i datorsammanhang. Det finns hur mycket som helst skrivet om "Random seed" på internet, alla programspråk har samma problem och det beror på att hårdvaran är det som bestämmer hur "slumpmässigt" ett tal kan genereras från ett program.

Programmet använder något typ av matematisk formel för att beräkna ett tal som ska vara pseudoslumpmässigt.

Matematik är per definition väldigt förutsägbart. men även på en kvantmekansisk nivå är datorn mycket förutsägbar. Det är bara vi människor som "upplever" att talen genereras slumpmässigt för att det är en så komplex formel att vi inte kan överblicka den med våra sinnen och intellekt.

Senast redigerad av Conny Westh den 2012-12-02 klockan 23:50
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-12-03, 00:10 #18
yakuzaemmes avatar
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2012
Inlägg: 773
yakuzaemme yakuzaemme är inte uppkopplad
Mycket flitig postare
yakuzaemmes avatar
 
Reg.datum: Jun 2012
Inlägg: 773
Och även jag säger samma sak, och gjorde det i min tidigare post. Det jag säger dock är att TS ej behöver ange ett frö, och du får det att verka som att det är absolut nödvändigt.

"// med ett slumpmässit frö annars får man upprepade serier av slumptal"
"Dessutom måste man ha ett slumpfrö så slumpserien inte upprepas vid nästa körning."
"men i de flesta programspråk jag kört genom åren så måste man alltid själv definiera ett "frö""

Det du säger är fel, och det var det jag poängterade.
yakuzaemme är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-12-03, 12:32 #19
SimonPs avatar
SimonP SimonP är inte uppkopplad
Mycket flitig postare
 
Reg.datum: May 2006
Inlägg: 832
SimonP SimonP är inte uppkopplad
Mycket flitig postare
SimonPs avatar
 
Reg.datum: May 2006
Inlägg: 832
Det beror på vad man skall göra, skall man använda programmet i kommersiella syften ska man inte använda de vanliga random() funktionerna, oavsett språk. De genererar alldeles för dåliga slumptal. Många språk har bättre alternativ, Java och Ruby har SecureRandom, PHP har mt_rand() osv.
SimonP är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-12-03, 18:29 #20
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
Jag tänkte inte ge mig in i debatten förutom att jag tror att Conny har fel i det här fallet. Man borde inte behöva ange seed när man skapar en ny instans av Random() eftersom den parameterlösa konstruktorn i sin tur anropar this(Environment.TickCount) vilket alltså ser ut att göra samma sak som att man själv skickar in värdet.

Vad Ruby har att göra i den här tråden där TS specifikt frågade efter C# har jag svårt att se.
dAEk är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 20:23.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017