Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Проблема с рандомными числами


Автор: Gtaman 20.4.2006, 10:30
Вобщем пишу вот такой код:

Код

<?php
if($game == bolmen) {
echo "<div align=center>";
$a = rand(1, 100);
echo $a;
?>
<form method="post">
<?php echo $lang_casino["bol"]; ?> - <input type="radio" name="bolmen" value="bol"><br>
<?php echo $lang_casino["men"]; ?> - <input type="radio" name="bolmen" value="men"><br>
<?php echo $lang_casino["yourbet"]; ?> - <input type="text" name="bet" value="0"><br>
<input type="submit" value="<?php echo $lang_casino["gaming"]; ?>">
</form>
<?php
$b = rand(1, 100);
if($bolmen == bol) {
if($a <= $b) {
echo $lang_casino["bolmenwin"]; echo "&nbsp;$b";
}
else { echo $lang_casino["bolmenloos"]; echo "&nbsp;$b"; }
}
if($bolmen == men) {
if($a >= $b) {
echo $lang_casino["bolmenwin"]; echo "&nbsp;$b";
}
else { echo $lang_casino["bolmenloos"]; echo "&nbsp;$b"; }
}
echo "</div>";
}
?>


По идее должно выполнятся так: при обращении к скрипту выпадет случайное число $a. Предлагается выбрать, будет ли следующее число, $b, больше или меньше числа $a, которое сейчас выпало.  Если оно больше или меньше(в зависимости от выбора), то победа, а если нет, то проигрышь.

А выполняется вот как: выпадает число $a. Отправляю форму и получаю результат, но так получается, что это число $a выпадает еще раз после отправки формы и соответсвенно получается, что человек играет вслепую. 

Автор: Satana 20.4.2006, 10:42
самое просто что приходит в голову - проверяй если числа равны то еще раз генерировать другое число пока не будет отличаться от заданного. 

Автор: Darhazer 20.4.2006, 11:16
в PHP rand() не хороший
Да и у тебя нету нигде srnad()
Добави перед rand()
Код
srand((double)microtime()*1000000);
 

Автор: Gtaman 20.4.2006, 11:42
Darhazer, не, это что-то не то..... не помогает smile  smile 

Все равно когда форму отсылаешь - генерится совсем другое $a
 

Автор: Darhazer 20.4.2006, 12:00
А ты хочеш сохранить $a?
Тогда сессию надо юзать...

Код

<?php
session_start();
if($game == bolmen) {
echo "<div align=center>";

$a = (isset($_SESSION['a']))?$_SESSION['a'] :  rand(1, 100);
$_SESSION['a'] = $a;
echo $a;
?>
<form method="post">
<?php echo $lang_casino["bol"]; ?> - <input type="radio" name="bolmen" value="bol"><br>
<?php echo $lang_casino["men"]; ?> - <input type="radio" name="bolmen" value="men"><br>
<?php echo $lang_casino["yourbet"]; ?> - <input type="text" name="bet" value="0"><br>
<input type="submit" value="<?php echo $lang_casino["gaming"]; ?>">
</form>
<?php
$b = rand(1, 100);
if($bolmen == bol) {
if($a <= $b) {
echo $lang_casino["bolmenwin"]; echo "&nbsp;$b";
}
else { echo $lang_casino["bolmenloos"]; echo "&nbsp;$b"; }
}
if($bolmen == men) {
if($a >= $b) {
echo $lang_casino["bolmenwin"]; echo "&nbsp;$b";
}
else { echo $lang_casino["bolmenloos"]; echo "&nbsp;$b"; }
}
echo "</div>";
}
?>
 

Автор: Gtaman 20.4.2006, 12:15
Darhazer, в какой-то мере - да, но не так. Нужно, чтобы зашел чел на страницу со скриптом. Выпало рандомно $a. Обновил страницу - $a уже другое число. Отправил форму, и $a, которое выпало при первичном обращении к скрипту - сравнивалось с $b. 

Автор: IvanB 20.4.2006, 12:44
Ну тогда на той странице, где лежит форма - добавь то, что написал Darhazer, но строчку 
Цитата(Darhazer @  20.4.2006,  12:00 Найти цитируемый пост)
$a = (isset($_SESSION['a']))?$_SESSION['a'] :  rand(1, 100);

Замени на просто 
Код

rand(1, 100);
 smile
Или тебе не это надо?
 

Автор: Gtaman 20.4.2006, 12:51
Да нет, не то..... там $a имеет одно значение...... А надо...... Вобщем, вот как тут надо:

http://wmlotto.com/?game=guessnum&l=rus 

Автор: Gtaman 20.4.2006, 14:50
Ну, что? Никто не может мне помочь? 

Автор: Darhazer 20.4.2006, 15:13
Ну, попробуй... а лучше прочитай по управление сесии и по работе с POST и GET
Код

<?php
session_start();
if($game == bolmen) {
echo "<div align=center>";
$a = (isset($_POST['bolmen']))?$_SESSION['a'] :  rand(1, 100);
$_SESSION['a'] = $a;
echo $a;
?>
<form method="post">
<?php echo $lang_casino["bol"]; ?> - <input type="radio" name="bolmen" value="bol"><br>
<?php echo $lang_casino["men"]; ?> - <input type="radio" name="bolmen" value="men"><br>
<?php echo $lang_casino["yourbet"]; ?> - <input type="text" name="bet" value="0"><br>
<input type="submit" value="<?php echo $lang_casino["gaming"]; ?>">
</form>
<?php
$b = rand(1, 100);
if($bolmen == bol) {
if($a <= $b) {
echo $lang_casino["bolmenwin"]; echo "&nbsp;$b";
}
else { echo $lang_casino["bolmenloos"]; echo "&nbsp;$b"; }
}
if($bolmen == men) {
if($a >= $b) {
echo $lang_casino["bolmenwin"]; echo "&nbsp;$b";
}
else { echo $lang_casino["bolmenloos"]; echo "&nbsp;$b"; }
}
echo "</div>";
}
?>
 

Автор: arial 21.4.2006, 14:20
Цитата(Darhazer)
Да и у тебя нету нигде srnad()
Добави перед rand()

Начиная с PHP 4.2.0, больше нет необходимости инициализировать генератор случайных чисел функциями srand() или mt_srand(), поскольку теперь это происходит автоматически. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)