Skocz do zawartości

[PHP] Funkcja losowanie


FXweb

Rekomendowane odpowiedzi

Wyniki array_rand przy 1000000 losowań z dziesięcioelementowej tablicy:

102946 102103 96593 101603 96405 98420 102803 96743 98913 103471

Nie o array_rand ci chodzi tylko o sposób działania skryptu. W powyższym skrypcie array_rand działa na pojedynczych grupach synonimów, nie uwzględniając poprzednich wyników. Oczywiście da się uzyskać efekt o którym piszesz ale trzeba by było znacznie rozbudować skrypt, tak żeby wybierał najbardziej urozmaicone teksty lub generował bazując na poprzednich wynikach.

e: Oczywiście wstawiając wystarczającą liczbę synonimów uzyskasz zadowalający efekt :)

BTW: Winston może masz po prostu jakąś starą wersję php w której trzeba zainicjować generator liczb losowych?

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

Orientujecie się jak można otrzymać lepszą losowość niż daje funkcja array_rand?

A istnieje lepsza lub gorsza losowość :)

tak, nawet prace naukowe o tym pisza (typowe potrzeby przy ktorych moze okazac sie ze "gorsza" losowosc jest niewystarczajaca to

kryptografia i zastosowania gdzie potrzeba duzych ilosci liczb losowych (symulacje zjawisk),przy ktorych zaczyna byc widac niedoskonalosci algorytmu pseudolosowego.

Odnośnik do komentarza
Udostępnij na innych stronach

Witam,

Ma ktoś może funkcję która pozwala wylosować dane z ciągu znaków typu:

Strona|Witryna} {WWW|internetowa} jest bardzo {ładna|piękna|ciekawa}.

Na zasadzie <?php losuj($ciag); ?> lub coś podobnego?

Pozdrawiam,

Tomek

Jak to są Twoje wpisy w katalogach

https://www.planes24.info - Twoje|Najlepsze} źródło {informacji|newsów|nowinek|nowości} w {temacie|dziedzinie} lotnictwa|samolotów|helikopterów|balonów}

to nie powinni Ci pomagać za SPAM :D

Sztuczna inteligencja (AI, artificial intelligence) to szeroka klasyfikacja przetwarzania danych. Machine Learning to technika przetwarzania danych, która umożliwia wykorzystanie przez komputery istniejących danych w celu przewidywania przyszłych zachowań, rezultatów i trendów. Drugie podejście to uczenie maszynowe (machine learning), czyli technika nauki o danych.

Odnośnik do komentarza
Udostępnij na innych stronach

@GEGE nie oskarżaj bezpodstawnie. To nie są moje dzieła.

Myślisz, że jeśli ja poprosiłem o samą funkcję, bo chciałem jej użyć na własnej stronie,

to już każde zło tego świata o podobnym charakterze należy do mnie?

a) pomyśl ilu ludzi skorzystało z tego tematu,

:brawa: pomyśl ilu ludzi jest w stanie to sami napisać

c) pomyśl ilu pozycjonerów ma programistów

d) pomyśl ile jest gotowych aplikacji z takim mechanizmem

e) pomyśl...

ehh.

Odnośnik do komentarza
Udostępnij na innych stronach

Orientujecie się jak można otrzymać lepszą losowość niż daje funkcja array_rand?

ja sobie napisałem funkcje korzystające z uniksowego generatora liczb losowych

echo unix_rand(5,10);

$klucze = unix_array_rand($tablica, 5);

unix_shuffle($tablica);

<?php
function unix_rand($min=0, $max=4294967295)
{
if ($max < $min) return false;

$devrand = fopen('/dev/urandom', 'r');
if (!$devrand)  return false;
$rand = fread($devrand, 4);
fclose($devrand);

$randnum = 0;
for ($i=0; $i<4; $i++)
  $randnum += pow(256,$i) * ord($rand[0]);

return $min + $randnum%($max-$min+1);
}

function unix_array_rand($a, $num_req=1)
{
$tmp = array();
$keys = array_keys($a);
foreach ($keys as $k)
  $tmp[] = array(unix_rand(), $k);
sort($tmp);

if ($num_req == 1)  
  return $tmp[1][1];

$num_req = min(count($tmp), $num_req);
for ($i=0; $i<$num_req; $i++)
{
 $ret[] = $tmp[$i][1];
}
return $ret;
} 

function unix_shuffle(&$a)
{ 
$ac = count($a);
$keys = unix_array_rand($a, $ac);

$new = array();
foreach ($keys as $k)
{
 $new[] = $a[$k];
}
$a = $new;
return true;
}
?>

bardziej czytelny kod jak klikniesz [odpisz] przy włączonym cytowaniu, bo na forum się wcięcia źle wyświetlają

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności