Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.08.2008, 19:56
FreeUser FreeUser вне форума
Начинающий
 
Регистрация: 13.08.2008
Сообщения: 119
Репутация: 10
По умолчанию Random

У меня 2 вопроса

1) надо получить случайное число. Использую для этих целей random, но числа все какие-то не уникальные. Бывает сразу 3 цифры подряд одинаковые. Как получить 1!!!!! Число от 0 10 с большей вероятностью не совпадения спредыдущим?

2) Необходимо рандомо получать число - 1 число - НЕ МАССИВ, а одно! например в пределах от 10 до 17.

Заранее всем благодарен.

P.s. Я тут вечно прошу все на коде объяснять т.к. я еще новичек.
Ответить с цитированием
  #2  
Старый 18.08.2008, 21:33
Аватар для Genry
Genry Genry вне форума
Начинающий
 
Регистрация: 14.04.2008
Адрес: с. Россия, г. Курган
Сообщения: 160
Версия Delphi: 7
Репутация: 10
Подмигивание

Да и вправду Random как-то тупит...
Можно сделать так:
Код:
var
i: integer;
begin
I:= Random(301);
I:=I div 100;
Ну это если надо от 1 до 3, то так...
__________________
http://forceway.ru/
Ответить с цитированием
  #3  
Старый 18.08.2008, 22:59
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Ответ на 1:
При создании формы проинициализируй гененратор функцией
Код:
Randomize

Почитай здесь:
Ссылка

Ответ на 2:
Число из интервала от А до B (включительно) получить можно так:
Код:
Random(B - A +1) + A
Ответить с цитированием
  #4  
Старый 18.08.2008, 23:42
Аватар для }{ОТТ@БЫЧ
}{ОТТ@БЫЧ }{ОТТ@БЫЧ вне форума
Прохожий
 
Регистрация: 07.05.2008
Сообщения: 41
Репутация: 10
По умолчанию

===Сообщение удалено===
P.S. Повторил, нечайно..... а удалить не смог =( модерам прошу удалить

Последний раз редактировалось }{ОТТ@БЫЧ, 18.08.2008 в 23:46.
Ответить с цитированием
  #5  
Старый 18.08.2008, 23:43
Аватар для }{ОТТ@БЫЧ
}{ОТТ@БЫЧ }{ОТТ@БЫЧ вне форума
Прохожий
 
Регистрация: 07.05.2008
Сообщения: 41
Репутация: 10
По умолчанию

На первый:
Код:
begin
Randomize; //Датчик генерции для большей уверенности
repeat //Цикл
i:=random(10);
 until i<>k; //Если полученное число не равно прошлому
k:=i;
Edit1.Text:=IntToStr(i);
end;
На второй:
Если я правильно тебя понял, то просто замени Random RandomRange(10, 17)
P.S. Переменные лучше указывай вне процедуре, функции.
Ответить с цитированием
  #6  
Старый 19.08.2008, 12:01
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Кто сказал, что если числа от 0 до 10, то не может быть 3 одинаковых чисел подряд? Если брать Random без параметров, то получаемое число дробное и повторения не должно быть, а одинаковые целые числа - это результат округления разных дробных чисел (на самом деле обычно псевдослучайное число - это остаток от деления, т.е. всё-таки целые числа, но не будем углубляться в дебри). Вывод можно делать, если получить, например, 100 чисел и построить гистограмму.
Ответить с цитированием
  #7  
Старый 19.08.2008, 13:26
FreeUser FreeUser вне форума
Начинающий
 
Регистрация: 13.08.2008
Сообщения: 119
Репутация: 10
По умолчанию

Как всегда ОГРОМНОЕ СПАСИБО! Очень помогли!
Ответить с цитированием
  #8  
Старый 21.08.2008, 16:58
FreeUser FreeUser вне форума
Начинающий
 
Регистрация: 13.08.2008
Сообщения: 119
Репутация: 10
По умолчанию

[Добавлено позже] И как всегда у меня что-то да не работает.

Код:
 
var DopFilenameDay:integer;
...
randomize;
...
DopFilenameDay:=RandomRange(10, 17);

Выдает
[Error] Mega.pas(711): Undeclared identifier: 'RandomRange'

Помогите пожалуйста исправить.
Ответить с цитированием
  #9  
Старый 21.08.2008, 17:14
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

uses Math;
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #10  
Старый 21.08.2008, 17:19
FreeUser FreeUser вне форума
Начинающий
 
Регистрация: 13.08.2008
Сообщения: 119
Репутация: 10
По умолчанию

The Shadow - Респект!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:59.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025