Gewinnspiel-Gewinner gewichtet und reproduzierbar ziehen
Dieser Gewinner-Zufallsgenerator mit Seed wählt einen Namen aus einer geordneten Liste und liefert stets dasselbe Ergebnis, solange Liste, Gewichtungen und Seed unverändert bleiben.
Im Browser ausführen – kostenlos
Vergeben Sie für jede Person ein Los oder höhere Anzahlen für Bonusaktionen, Losbündel oder andere veröffentlichte Regeln. Da die Berechnung weder eine Uhr noch eine verborgene Zufallsquelle nutzt, können Sie Seed und Eingabe zusammen mit dem Ergebnis speichern, die Ziehung später wiederholen und genau belegen, wie die gewinnende Person ausgewählt wurde.
Bereiten Sie eine geordnete Liste mit korrekten Gewichten vor
Beginnen Sie mit einer Zeile je teilnehmender Person und halten Sie die Zeilen in einer bewusst gewählten, stabilen Reihenfolge. Jede Zeile benötigt einen nicht leeren Namen. Der optionale Wert entries ist eine positive ganze Zahl: Lassen Sie ihn für ein Los weg, verwenden Sie zwei für das doppelte Auswahlgewicht und entsprechend höhere Werte für weitere Lose. Eine Person mit fünf Losen belegt fünf Positionen im gedachten Lostopf, eine Person mit einem Los dagegen nur eine Position. Das Werkzeug führt doppelte Namen nicht zusammen, denn sie können rechtmäßige getrennte Datensätze darstellen; ein stilles Zusammenlegen würde die veröffentlichten Chancen verändern. Falls Ihre Quelle Duplikate enthalten kann, entscheiden Sie vor der Ziehung über deren Zusammenführung und dokumentieren Sie die Entscheidung. Fixieren Sie außerdem die endgültige Reihenfolge, bevor Sie den Seed bekannt geben. Sortieren, Hinzufügen, Entfernen, Umbenennen oder Ändern eines Gewichts verschiebt die gewichteten Bereiche und kann den Gewinner ändern. Die Berechnung verarbeitet bis zu 10,000 Zeilen und prüft jedes Gewicht, statt Brüche zu runden oder Platzhalter mit null Gewicht zuzulassen. Dadurch nimmt jede übermittelte Zeile teil und jede angegebene Loszahl trägt unmittelbar zu ihrer Chance bei.
Machen Sie die Ziehung mit einem Seed reproduzierbar
Als Seed eignet sich jeder nicht leere Text, den Sie für die Ziehung festlegen, etwa eine Kampagnenkennung zusammen mit einer Bezeichnung des Einsendeschlusses. Das Werkzeug wandelt diesen exakten Text mit einem dokumentierten Hash in einen festen vorzeichenlosen 32-Bit-Wert um und ordnet ihn anschließend einer Position im gesamten gewichteten Losbereich zu. Danach durchläuft es die Teilnehmenden in der gelieferten Reihenfolge und gibt die Zeile zurück, deren kumulierter Bereich diese Position enthält. Derselbe Seed, dieselbe Reihenfolge, dieselben Namen und Loszahlen erzeugen in der API und im Browser immer dieselbe Ausgabe. Groß- und Kleinschreibung, Leerzeichen und Satzzeichen sind relevant; speichern Sie deshalb die ursprüngliche Zeichenfolge, statt sie später neu einzutippen. Für ein öffentliches Verfahren sollten Sie bereits vor Einsendeschluss festlegen, wie der Seed entsteht, beispielsweise anhand eines eindeutig bezeichneten externen Werts, der erst nach Ablauf veröffentlicht wird. Dieses Werkzeug arbeitet deterministisch und nicht kryptografisch zufällig: Es dient einer wiederholbaren, leicht prüfbaren Auswahl und nicht der Erzeugung eines unvorhersehbaren Geheimnisses. Veröffentlichen Sie einen frei gewählten Seed nicht vorzeitig, wenn die Liste noch anhand des erwarteten Ergebnisses verändert werden könnte.
Dokumentieren und prüfen Sie das Gewinnergebnis
Das Ergebnis nennt den Gewinnernamen, den bei null beginnenden Index der ausgewählten Zeile, die ebenfalls bei null beginnende gewichtete Losposition, die Gesamtzahl der Lose und den aus dem Seed abgeleiteten numerischen Hash. Bewahren Sie die vollständige Eingabe zusammen mit diesen Feldern in Ihren Gewinnspielunterlagen auf. Eine prüfende Person kann dieselben geordneten Zeilen und denselben Seed übermitteln, die Summe bestätigen und denselben Gewinner erhalten, ohne einem Bildschirmfoto oder einer unerklärten Zufallsschaltfläche vertrauen zu müssen. Der Zeilenindex unterscheidet außerdem zwei Datensätze mit identischem Anzeigenamen; die gewichtete Position zeigt, an welcher Stelle im gedachten Lostopf die Auswahl lag. Weicht eine Wiederholung ab, vergleichen Sie die gespeicherten Eingaben Zeichen für Zeichen: Bereits ein bereinigter Name, eine verschobene Zeile, ein angepasstes Gewicht oder eine andere Großschreibung im Seed kennzeichnet eine neue Ziehung. Die Browserversion eignet sich für eine transparente manuelle Auswahl. Die API kostet $0.002 pro Anfrage, wenn Sie dasselbe Verfahren in Kampagnensoftware oder einem Prüfprotokoll automatisieren möchten. In beiden Kanälen verwendet der Algorithmus weder Netzwerk noch aktuelle Uhrzeit oder veränderlichen Zustand; Ausführungsumgebung und Datum beeinflussen die Antwort daher nicht.
Anwendungsfälle
Einen Social-Media-Preis verlosen
Fixieren Sie nach Ablauf alle berechtigten Namen, veröffentlichen oder archivieren Sie den Seed und ziehen Sie einen reproduzierbaren Gewinner.
Regeln für Bonuslose berücksichtigen
Vergeben Sie für qualifizierende Aktionen höhere Loszahlen und halten Sie die Auswahl proportional zu den dokumentierten Gewichten.
Eine Kampagnenziehung prüfen
Speichern Sie die geordnete Eingabe und die zurückgegebenen Hash-Angaben, damit andere das veröffentlichte Ergebnis unabhängig reproduzieren können.
Häufige Fragen
Was kostet eine Ziehung?
Der API-Preis beträgt $0.002 pro Anfrage. Dieselbe deterministische Berechnung können Sie im Browser auch kostenlos ausführen.
Was geschieht, wenn die Loszahl fehlt?
Die betreffende Person erhält ein Los. Angegebene Gewichtungen müssen positive ganze Zahlen sein.
Wählt derselbe Seed immer denselben Gewinner?
Ja, sofern Seed und vollständige geordnete Liste einschließlich Namen und Loszahlen identisch sind.
Wirkt sich eine andere Reihenfolge aus?
Ja. Die Reihenfolge bestimmt den Bereich jeder Person im gewichteten Lostopf; umsortierte Zeilen bilden daher eine andere Ziehungseingabe.
Ist diese Ziehung kryptografisch zufällig?
Nein. Der transparente deterministische Selektor ist auf Reproduzierbarkeit ausgelegt. Wenn Unvorhersehbarkeit wichtig ist, wählen Sie eine nicht manipulierbare Seed-Quelle.
Warum bleiben doppelte Namen getrennt?
Jede gelieferte Zeile bleibt erhalten, weil Duplikate beabsichtigt sein können. Der ausgegebene Index bezeichnet den gewonnenen Datensatz eindeutig.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/game/giveaway-winner-pick \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"entrants":[{"name":"Avery","entries":1},{"name":"Blake","entries":3},{"name":"Casey"}],"seed":"spring-campaign-2026"}'const res = await fetch("https://api.kit.forhosting.com/game/giveaway-winner-pick", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"entrants": [
{
"name": "Avery",
"entries": 1
},
{
"name": "Blake",
"entries": 3
},
{
"name": "Casey"
}
],
"seed": "spring-campaign-2026"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/game/giveaway-winner-pick",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"entrants": [
{
"name": "Avery",
"entries": 1
},
{
"name": "Blake",
"entries": 3
},
{
"name": "Casey"
}
],
"seed": "spring-campaign-2026"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/game/giveaway-winner-pick", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"entrants":[{"name":"Avery","entries":1},{"name":"Blake","entries":3},{"name":"Casey"}],"seed":"spring-campaign-2026"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"entrants":[{"name":"Avery","entries":1},{"name":"Blake","entries":3},{"name":"Casey"}],"seed":"spring-campaign-2026"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/game/giveaway-winner-pick", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"entrants": [
{
"name": "Avery",
"entries": 1
},
{
"name": "Blake",
"entries": 3
},
{
"name": "Casey"
}
],
"seed": "spring-campaign-2026"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.giveaway_winner_pick",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_items | 10000 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |