witam, w jaki sposób mogę uzyć randa zeby mi wylosować jedną z tych liczb:
liczby_lista = "5,123,66,34,879,43,567";
witam, w jaki sposób mogę uzyć randa zeby mi wylosować jedną z tych liczb:
liczby_lista = "5,123,66,34,879,43,567";
Wstawiasz liczby w tablicę i losujesz indeks, lol. Albo: http://php.net/manual/en/function.array-rand.php
Czyli:
<?php
$tablica = [5,123,66,34,879,43,567];
echo $tablica[rand(0, count($tablica)-1)];
?>
albo prościej:
<?php
$tablica = [5,123,66,34,879,43,567];
echo $tablica[array_rand($tablica)];
?>
kmph napisał(a):
Czyli:
<?php $tablica = [5,123,66,34,879,43,567]; echo $tablica[rand(0, count($tablica)-1)]; ?>
albo prościej:
<?php $tablica = [5,123,66,34,879,43,567]; echo $tablica[array_rand($tablica)]; ?>
wielkie dzięki :)
kmph napisał(a):
Czyli:
<?php $tablica = [5,123,66,34,879,43,567]; echo $tablica[rand(0, count($tablica)-1)]; ?>
albo prościej:
<?php $tablica = [5,123,66,34,879,43,567]; echo $tablica[array_rand($tablica)]; ?>
jeszcze jedno mam pytanko jak do tego dodać np zeby kazda liczba miała swoją szanse? np $tablica = [5;500,123;1000,66;700,34;400,879;5,43;45,567;657];
Losujesz liczbę całkowitą z zakresu [0; suma szans). Jeśli wylosujesz liczbę z zakresu [0; szansa na liczbę o indeksie 0) to bierzesz z tablicy liczbę o indeksie 0. Jeśli wylosujsz libczę z zakresu [szansza na licbzę o indeksie 0; szansza na liczbę o indeksie 0+szansza na liczbę o indeksie 1) to bierzesz liczbę o indeksie 1.
Zastanów się, nie będę pisał za ciebie całego kodu, a wpadnięcie na prawidłowe rozwiązanie naprawdę nie jest trudne.
kmph napisał(a):
Losujesz liczbę całkowitą z zakresu [0; suma szans). Jeśli wylosujesz liczbę z zakresu [0; szansa na liczbę o indeksie 0) to bierzesz z tablicy liczbę o indeksie 0. Jeśli wylosujsz libczę z zakresu [szansza na licbzę o indeksie 0; szansza na liczbę o indeksie 0+szansza na liczbę o indeksie 1) to bierzesz liczbę o indeksie 1.
Zastanów się, nie będę pisał za ciebie całego kodu, a wpadnięcie na prawidłowe rozwiązanie naprawdę nie jest trudne.
chciałem coś takiego zrobić ze np:
f = 10000 szans z (100000)
d = 6000 szans z (100000)
a = 5000 szans z (100000)
b = 4000 szans z (100000)
c = 3000 szans z (100000)
i zeby zaczynalo losowac od najmniejszej szansy do najwiekszej jezeli jakas litera zostanie wylosowana wtedy sie zatrzymuje
to co napisałeś wcale nie zrozumiałem przykro mi ale naprawdę nic z tego nie rozumiem
Przecież wiem, o co ci chodziło.
rand(1, 99)
- losuje ci dowolną liczbę z zakresu od 1 do 100 włącznie.
Weź zeszyt w kratkę. Narysuj przedział na 10 kratek. 1 kratka = 10 szans. Razem masz więc 10 kratek po 10 szans, co daje 100 szans.
Teraz na tym przedziale o długości 10 kratek zaznacz podprzedział o długości 2 kratek, od kratki pierwszej do drugiej. Co daje razem 20 szans. Przyporządkuj do tego podprzedziału np. literkę a
. Jeśli wylosowana liczba wpadnie do tego podprzedziału, to znaczy, że wylosowałeś literkę a
.
Zaraz za tym podprzedziałem umieść kolejny podprzedział, tym razem o długości 3 kratek. Co daje razem 30 szans. Ustal, że jeśli wylosowana liczba wpadnie do tego podprzedziału, to znaczy, że wylosowałeś np. literkę b
.
Zaraz za nim umieśćkolejny podprzedział, tym razem o długości 4 kratek. Co daje razem 40 szans. Ustal, że jeśli wylosowana liczba wpadnie do tego podprzedziału, to znaczy, że wylosowałeś literkę c
.
Ostatnia kratka stanowi podprzedział o długości 1 kratki, czyli 10 szans. To jest popdrzedział przyporządkowany literce d
.
Tak więc ostatecznie losujemy jedną spośród 4 literek: a
, b
, c
, d
, przy czym:
a
- 20 szans na 100b
- 30 szans na 100c
- 40 szans na 100d
- 10 szans na 100Zauważ, że oznacza to, że jeśli wylosowałeś liczbę z zakresu [1, 20], (np. liczbę 16), to oznacza to, że wylosowałeś literkę a
(bo ta liczba należy do przedziału przyporządkowanego literce a
, zaś jeśli wylosowałeś liczbę z zakresu [51, 90], (np. liczbę 51), to oznacza to, że wylosowałeś literkę c
(bo liczba 51
należy do przedziału przyporządkowanego literce c
.
Więcej naprawdę nic nie powiem, chyba że zaprezentujesz własną próbę rozwiązania tego zadania.
kmph napisał(a):
Przecież wiem, o co ci chodziło.
rand(1, 99)
- losuje ci dowolną liczbę z zakresu od 1 do 100 włącznie.Weź zeszyt w kratkę. Narysuj przedział na 10 kratek. 1 kratka = 10 szans. Razem masz więc 10 kratek po 10 szans, co daje 100 szans.
Teraz na tym przedziale o długości 10 kratek zaznacz podprzedział o długości 2 kratek, od kratki pierwszej do drugiej. Co daje razem 20 szans. Przyporządkuj do tego podprzedziału np. literkę
a
. Jeśli wylosowana liczba wpadnie do tego podprzedziału, to znaczy, że wylosowałeś literkęa
.Zaraz za tym podprzedziałem umieść kolejny podprzedział, tym razem o długości 3 kratek. Co daje razem 30 szans. Ustal, że jeśli wylosowana liczba wpadnie do tego podprzedziału, to znaczy, że wylosowałeś np. literkę
b
.Zaraz za nim umieśćkolejny podprzedział, tym razem o długości 4 kratek. Co daje razem 40 szans. Ustal, że jeśli wylosowana liczba wpadnie do tego podprzedziału, to znaczy, że wylosowałeś literkę
c
.Ostatnia kratka stanowi podprzedział o długości 1 kratki, czyli 10 szans. To jest popdrzedział przyporządkowany literce
d
.Tak więc ostatecznie losujemy jedną spośród 4 literek:
a
,b
,c
,d
, przy czym:
a
- 20 szans na 100b
- 30 szans na 100c
- 40 szans na 100d
- 10 szans na 100Zauważ, że oznacza to, że jeśli wylosowałeś liczbę z zakresu [1, 20], (np. liczbę 16), to oznacza to, że wylosowałeś literkę
a
(bo ta liczba należy do przedziału przyporządkowanego litercea
, zaś jeśli wylosowałeś liczbę z zakresu [51, 90], (np. liczbę 51), to oznacza to, że wylosowałeś literkęc
(bo liczba51
należy do przedziału przyporządkowanego litercec
.Więcej naprawdę nic nie powiem, chyba że zaprezentujesz własną próbę rozwiązania tego zadania.
niby mozna przypozadkować liczbę pod randa
ale jezeli sa np
np
losowanie = rand(1,100)
if(losowanie == 100){
rand(c, d);
echo c = 100
echo d = 100
}
inaczej nie wiem jak to zrobic za pomocą tablicy
to wtedy wylosuję obydwie
no chyba ze jezeli wylosuje z tą samą szansą c,d to jeszcze raz losować miedzy nimi o to chodzi?
Po co Ci dwa randy?? Tak jak napisałem, wystarczy 1 losowanie. JEDNO. Jedno wywołanie funkcji rand. Tyle wystarczy. Jeśli wywołujesz funkcję rand dwa lub więcej razy, a niektóre do tego jeszcze zagnieżdżasz w ifach, to robisz to źle.
Przeczytaj jeszcze raz, co pisałem.