Come creare un algoritmo per una lotteria, in cui ogni lotteria garantisce un biglietto vincente?

-2

Sto cercando un algoritmo per creare una lotteria, in cui a ciascun partecipante è assegnato un ticket con una serie casuale di numeri.
Ogni lotteria ha N partecipanti, e ci dovrebbe essere la stessa quantità di biglietti della lotteria, un biglietto per utente.
L'utente deve conoscere i suoi numeri di biglietto prima dell'estrazione, in modo che possa seguire il sorteggio e anticipare se è vincente.
Ogni lotteria ha un minimo di un vincitore.
Alcune lotterie possono avere due o più biglietti vincenti, mentre ogni biglietto può vincere solo una volta. Un biglietto vincente viene rimosso dalla lotteria attuale.
Se è disponibile più di un biglietto vincente, questo dovrebbe essere determinato prima dell'inizio della lotteria.
Dovrebbe essere impossibile disegnare spazi vuoti.

Come si può creare una lotteria con tali proprietà. O più nello specifico:

Come possiamo generare i numeri della lotteria e i biglietti in quanto tali, che ogni lotteria ha uno o (1 + N) biglietto vincente garantito. Come possiamo evitare gli spazi vuoti?

Lo pseudocodice sarebbe ottimo e / o alcuni indicatori di algoritmi forse noti che risolvono problemi simili.

    
posta jottr 06.05.2016 - 00:47
fonte

3 risposte

2

Se capisco cosa vuoi, allora:

create empty list
for 1..N:
    do
        r = random number
    while r in list

    add r to list
    give ticket with r to person

 for number of winners:
    r = random element in list
    announce r as a winner
    remove r from list
    
risposta data 06.05.2016 - 01:26
fonte
0

Sembra che la parte difficile del tuo problema sia indicata nel tuo commento in cui dici di voler scegliere il numero vincente "disegnando" singole cifre casuali e pettinandole

Per garantire un vincitore devi scegliere un biglietto vincente da un elenco di biglietti venduti. Normalmente devi semplicemente registrare un elenco di biglietti venduti e sceglierne uno a caso per ottenere il vincitore.

Potresti quindi annunziare i numeri vincenti uno alla volta?

Se vuoi disegnare a caso le cifre, dovrai limitare i possibili risultati. Vale a dire. Se hai venduto solo 1200 biglietti, puoi scegliere solo 4 numeri e il primo può essere solo 1 o 0 e così via.

Potresti scoprire che il numero oi numeri vincenti risultanti non sono più casuali. Vale a dire. Se puoi vincere abbinando 3 numeri, 1 e 0 sono buoni da scegliere.

In effetti pensandoci questo vale anche se selezioni l'intero numero dalla lista dei vincitori e permetti ai giocatori di selezionare i loro numeri.

    
risposta data 06.05.2016 - 19:57
fonte
0

Avere una serie di numeri su un biglietto (ad es. 3 7 11 13 14 25) dato casualmente a N partecipanti dove N è un numero molto basso (per esempio 23) e quindi escogitare un algoritmo in cui è possibile disegnare un numero a un tempo per assicurarti che sceglierai un vincitore (probabilmente con alcuni partecipanti che ancora credono di poter essere un vincitore abbastanza lontano nel disegno) semplicemente non si sommano.

Non puoi.

Ovviamente potresti dare ai 23 partecipanti il ticket 1, 2, 3, 4, 5, 5 + n dove n è il numero del partecipante. Quindi disegna i numeri 1, 2, 3, 4, 5 e quindi disegna 5 + x dove x è compreso tra 1 e il numero di partecipanti. Ma dubito che la gente lo troverà divertente nella seconda settimana.

    
risposta data 06.05.2016 - 20:32
fonte

Leggi altre domande sui tag