C++ random gegeven ASCII waardes husselen.

Pagina: 1
Acties:
  • 268 views

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Even een stomme vraag maar ik kan het nergens vinden op Google.

Ik wil drie ascii waardes husselen: Is dat mogelijk? En ja: hoe dan?

Acties:
  • 0 Henk 'm!

  • Springuin
  • Registratie: Juli 2002
  • Laatst online: 11-09 20:13

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja dat wat weet ik. (shit, vergeet weer de helft)

ik weet dat je met rand() waardes lukraak kan generen.
Maar: ik wil drie vaste ASCII waardes laten husselen door rand();

Acties:
  • 0 Henk 'm!

Verwijderd

Je hebt een lijst met waarden. Loop over deze lijst en ruil ieder item met een random andere item in de lijst.

4 maal loopen over 52 kaarten is genoeg voor een goede schud. Ik begreep dat het zo gebruikelijk is bij de grote pokerspelen (online).

Acties:
  • 0 Henk 'm!

  • Turiya
  • Registratie: Maart 2006
  • Laatst online: 05-07 10:30
Misschien begrijp ik je vraag niet goed, maar als je de volgorde wilt husselen, bepaal je toch gewoon drie verschillende willekeurige getallen van 0 t/m 2, die de volgorde bepalen?

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:43
Verwijderd schreef op zondag 19 juli 2009 @ 21:20:
Je hebt een lijst met waarden. Loop over deze lijst en ruil ieder item met een random andere item in de lijst.
4 maal loopen over 52 kaarten is genoeg voor een goede schud. Ik begreep dat het zo gebruikelijk is bij de grote pokerspelen (online).
Ik hoop het niet, want die methode is notoir biased. De Fisher–Yates (aka Knuth) shuffle is een goede algemene methode.

In dit specifieke geval: als het altijd om drie waarden gaat, zijn er dus maar 6 permutaties, dus kun je net zo goed een random getal tussen 1 en 6 nemen en de bijbehorende permutatie pakken.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nee, ik heb drie ASCII waardes. En die willen ik husselen zodat er 1 van die drie tevoorschijn komt.
Hoe doe ik dat?

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:43
Getal tussen 1 en 3 pakken en dan het corresponderende element nemen? Hoe doe je het niet?

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op zondag 19 juli 2009 @ 21:26:
Nee, ik heb drie ASCII waardes. En die willen ik husselen zodat er 1 van die drie tevoorschijn komt.
Hoe doe ik dat?
terug op rand()?
anders gezegd voor je: 3 waarden (0,1,2) -> floor(rand()*3).

ps. Soultaker heeft gelijk, dat de functie die ik waardevol achtte, biased en dus oneerlijk is. Het zou al verbeteren als je ze overplaatst naar een tweede lijst.

[edit] Soultaker watch the faint of heart :P

[ Voor 4% gewijzigd door Verwijderd op 19-07-2009 21:31 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Nou; ik vind 't wel welletjes. Je opent een topic met een totaal gebrek aan (zichtbare) eigen initiatief (zie onze Quickstart) en alle posts daarop voegen weinig zinnige informatie toe en neigen eigenlijk allemaal naar 1 ding: want more!
En we gaan je hier niet aan het handje houden; er zijn voldoende tips gegeven in dit topic en je moet er met 5 minuten nadenken prima uit kunnen komen; lukt dat niet dan open gerust een nieuw topic maar zorg dan wel dat je je houdt aan de voorgenoemde Quickstart en toon daarbij relevante(!) code die je dan hebt.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.