Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Losowanie cyfry co 24h
mateŁusz
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 21.08.2012

Ostrzeżenie: (0%)
-----


A więc mam taki kod:
  1. <?php
  2. $numerek=''; for($i='0';$i<1;$i++){$numerek.=rand(1,38);}
  3. echo $numerek
  4. ?>


Co zrobić, aby cyfra z zakresu 1 - 38 losowała się co 24h? Jak będzie godzina 0.00 to liczba zmienia się sama.
Tak samo.. jak zrobić, aby było, np. że cyfra 14 i 17 ma 30% na wylosowanie się? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
b4rt3kk
post
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Moim zdaniem liczba nie musi losować się automatycznie, bo wystarczyłoby, że jak ktoś wejdzie na stronkę to w tym momencie dopiero sprawdza czy liczba nie jest ta sama dłużej niż 24h i wtedy losuje nową. Jako godzinę wyjściową ustalić np. 00:00.

Data ustalenia pierwszej liczby: 2012-10-01 00:00:00, z datą ważności do 2012-10-01 23:59:59, kolejna byłaby od 2012-10-02 00:00:00, itd. Jeśli przez dzień lub dwa nikt by na stronkę nie wchodził to oczywistym jest, że nie wygenerowałoby kolejnej liczby, ale raczej ludzie bezpośrednio w bazie danych tego sprawdzać nie będą? Ogólnie rzecz biorąc wystarczy ustalić datę ważności nowej liczby na dzień dzisiejszy, do godz 23:59:59, jeśli data ważności poprzedniej już wygasła.

Myślę, że to dosyć prosta metoda.

A co do większej szansy na wylosowanie danej liczby to dodaj wagi liczb, ale wtedy mt_rand się nie sprawdzi, będziesz potrzebował tabeli z liczbami i ich wagami.

  1. $ile = 24 // ile numerków do losowania
  2. $liczba = 10 // który numerek ma mieć większą wagę
  3. $szansa = 0.3 // o ile % większa szansa na wylosowanie
  4. $waga = ceil($ile*$szansa) // waga, może być liczona lub wpisana ręcznie
  5. $tablica = array();
  6.  
  7. for ($i=1; $i<=$ile; $i++) {
  8. if ($i == $liczba) for ($j=1; $j<=$waga; $j++) $tablica[] = $i; else $tablica[] = $i;
  9. }
  10.  
  11. $numer_wylosowany = $tablica[mt_rand(1, sizeof($tablica))];


takie coś mi do głowy przyszło w związku z losowaniem jednej liczby ze zwiększoną szansą.

Ten post edytował b4rt3kk 1.10.2012, 15:34:23
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 06:09