Rand – losowanie jednej z liczby

Rand – losowanie jednej z liczby
0

witam, w jaki sposób mogę uzyć randa zeby mi wylosować jedną z tych liczb:

Kopiuj
liczby_lista = "5,123,66,34,879,43,567";
edytowany 2x, ostatnio: flowCRANE
KM
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:473
0

Wstawiasz liczby w tablicę i losujesz indeks, lol. Albo: http://php.net/manual/en/function.array-rand.php

KM
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:473
0

Czyli:

Kopiuj
    <?php
     
    $tablica = [5,123,66,34,879,43,567];
     
    echo $tablica[rand(0, count($tablica)-1)];
     
    ?>

albo prościej:

Kopiuj
    <?php
     
    $tablica = [5,123,66,34,879,43,567];
     
    echo $tablica[array_rand($tablica)];
     
    ?>
0
kmph napisał(a):

Czyli:

Kopiuj
    <?php
     
    $tablica = [5,123,66,34,879,43,567];
     
    echo $tablica[rand(0, count($tablica)-1)];
     
    ?>

albo prościej:

Kopiuj
    <?php
     
    $tablica = [5,123,66,34,879,43,567];
     
    echo $tablica[array_rand($tablica)];
     
    ?>

wielkie dzięki :)

0
kmph napisał(a):

Czyli:

Kopiuj
    <?php
     
    $tablica = [5,123,66,34,879,43,567];
     
    echo $tablica[rand(0, count($tablica)-1)];
     
    ?>

albo prościej:

Kopiuj
    <?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];

KM
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:473
0

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.

0
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

KM
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:473
0

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 100
  • b - 30 szans na 100
  • c - 40 szans na 100
  • d - 10 szans na 100

Zauważ, ż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.

0
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 100
  • b - 30 szans na 100
  • c - 40 szans na 100
  • d - 10 szans na 100

Zauważ, ż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.

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?

KM
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:473
0

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.

0
kmph napisał(a):

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.

No ok ale dajmy na to przyklad ze chce jedna literke zamiast dwoch a obydwie beda miec to 100% wtedy rand mi wylosuje obydwie, moze dalej cos zle rozumiem musze pomyslec.

Ale bez ifa raczej to jest nie wykonywalne i ponownego losowania

KM
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:473
0

a obydwie beda miec to 100%

Obydwie nie mogą mieć 100%, bo jeśli przy losowaniu jednej literki z iluśtam przypisujesz każdej literce wagi, to wszystkie te wagi muszą sumować się do 100%. A jeśli obydwie literki mają wagi po 100% to wówczas suma wag wynosi 200%, co jest absurdem.

Waga 100% oznacza pewność wylosowania. Więc jeśli losujesz 1 literkę z dwóch to nie możesz ustalić, że każda zostanie wylosowana na pewno!!

Zamiast tego możesz np. przypisać każdej z dwóch literek wagę 50%. Wówczas będziesz miał połowę szans, że wylosuje ci się jedna literka, i połowę szans, że wylosuje ci się druga. Albo możesz jednej literce dać wagę 20%, a drugiej 80%. Wtedy druga będzie wypadać 4 razy częściej, niż pierwsza.

Byleby wagi sumowały się do 100%.

EDIT: I dlatego też to jest źle:

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)

Jeśli dajesz każdej literce ileś szans z 100000 to szanse muszą sumować się do 100000. Tymczasem tutaj szanse sumują ci się do 10000+6000+5000+4000+3000=28000. To oznacza, że pozostaje ci 100000-28000=72000 szans na to, że nie wylosuje ci się żadna literka.

edytowany 1x, ostatnio: kmph
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)