Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с генератором случайных чисел  (Прочитано 31271 раз)
0 Пользователей и 1 Гость смотрят эту тему.
TGrey[WoLf]
Постоялец

ua
Offline Offline
Пол: Мужской

« : 06-01-2007 03:53 » 

Добрый день. Хочу спросить, как я могу осуществить 1 проект. У меня на форме расположены: 3 Lable, 1 Timer, 1 Button.
И вот при нажатии на кнопку Lable->captions, должны изменяться на рызные числа(буквы), до тех пор, пока не будет нужная комбинация.
Меня интерисует ,как ето осущевствить способом просто Rnd и Rnd из уже заданых чисел(букв).

Сам я все сделал, кроме подстановки чисел(букв). Если можно подскажите по етой части.
« Последнее редактирование: 06-01-2007 08:34 от Finch » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 06-01-2007 09:00 » 

TGrey[WoLf], Я поменял название темы. Согласись,  что тот кто будет искать подобный вопрос. Тема "Помогите" ему ничего не даст при поиске.

Из твоего путаного объяснения, я понял что тебе нужно из чисел, получаемых генератором, составлять какие либо комбинации знаков.
Ну первое, что приходит на ум:
Код: (C++)
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

void SetRND(char ch[5]) // делаем комбинацию из 4 знаков
{
   char kom[16]="asdlir13578cxmk";   //Тут твоя комбинация знаков
   for(int i=0; i<4; i++) ch[i]=kom[rand() % 15];
   ch[4]=0;
 }  
 
int main()
{
   char ch[5];
   srand(time(0));
   SetRND(ch);
   printf("%s\n",ch);
   return 0;
}
« Последнее редактирование: 06-01-2007 09:26 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
TGrey[WoLf]
Постоялец

ua
Offline Offline
Пол: Мужской

« Ответ #2 : 07-01-2007 01:24 » 

Да, действительно не поможет) В преть буду стараться называть темы, как положено.

Но а всеже, как мне етот код использовать в обработчике кнопки?
Мне же надо, чтоб после нажатия кнопки captions изменялись до определенного момента.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 07-01-2007 12:53 » 

TGrey[WoLf], не понятно - тебе результат нужно получить, или эффект?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
TGrey[WoLf]
Постоялец

ua
Offline Offline
Пол: Мужской

« Ответ #4 : 08-01-2007 01:38 » 

New=>Aplication

На форму кидаю кнопку и 3 лейбла.
В событиях кнопки захожу в событие OnClick и туда надо вписать код, чтобы лейблы генерировали разные числа.
Я б и сам сделал, но незнаю как в БСБ делать Rnd Жаль
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 08-01-2007 11:56 » 

У тебя хелпов нет?
Вроде бы rand() - ф-ия стандартная...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
TGrey[WoLf]
Постоялец

ua
Offline Offline
Пол: Мужской

« Ответ #6 : 09-01-2007 01:40 » 

Rand() не действует.... И ни в 1 хелпе или книге неуказывалось, как делать случайные числа.
Записан
zubr
Гость
« Ответ #7 : 09-01-2007 04:51 » 

Вот простейший код в стройке, в таймере генерятся случайные числа:
Цитата
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   randomize();
   Timer1->Enabled=TRUE;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   int r=random(100);
   Label1->Caption=IntToStr(r);
   if(r==50)
   Timer1->Enabled=FALSE;
}
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:   // IDE-managed Components
        TButton *Button1;
        TTimer *Timer1;
        TLabel *Label1;
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall Timer1Timer(TObject *Sender);
private:   // User declarations
public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 09-01-2007 08:30 » 

Цитата
Header File

stdlib.h

Category

Math Routines

Syntax

#include <stdlib.h>
int rand(void);

Description

Random number generator.

rand uses a multiplicative congruential random number generator with period 2 to the 32nd power to return successive pseudo-random numbers in the range from 0 to RAND_MAX. The symbolic constant RAND_MAX is defined in stdlib.h.

Return Value

rand returns the generated pseudo-random number.

Цитата
Header File

stdlib.h

Category

Math Routines

Syntax

#include <stdlib.h>
void srand(unsigned seed);

Description

Initializes random number generator.

The random number generator is reinitialized by calling srand with an argument value of 1. It can be set to a new starting point by calling srand with a given seed number.

Return Value

None.
« Последнее редактирование: 09-01-2007 08:31 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
TGrey[WoLf]
Постоялец

ua
Offline Offline
Пол: Мужской

« Ответ #9 : 10-01-2007 01:36 » 

Да, спасибо мне 1 хороший человек по ICQ помог.

Вот только для быстрой генерации чисел он добавил  Randomize();
в
Код:
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
Randomize;
}

И вот только вместо
Код:
Random(100);
Я писал
Код:
Rand() % 10;
Еффект идет РНД до 9. В чем разница етих способов?
Записан
nikedeforest
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 10-01-2007 02:18 » 

Функция Randomize() необходима. Она инициализирует генератор случайных чисел, вызов ее обязателен.
Функция rand() - random number generator возвращает псевдо-случайное число в пределах от 0 до RAND_MAX. Значение RAND_MAX можешь поглядеть в подключаемой библиотеке.
Оператор % возвращает остаток от деления. Чувствую, что необходимо пояснить, что такое остаток от деления. Поясню примерами, аннологию поймешь. На твоем примере
256%10=6
100%10=0
32%10=2
////////
256%100=56
100%100=0
32%100=32
Этот оператор относится к синтаксису языка С, что говорит о том, что ты его плохо знаешь.
Тебе здесь помогло кучу хороших человеков, но ты это увы не понял.
Записан

ещё один вопрос ...
zubr
Гость
« Ответ #11 : 10-01-2007 04:55 » 

Цитата
В чем разница етих способов?
rand - функция от Microsoft
Random - от Borland, думаю на основе rand
Random, думаю, несколько удобнее.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 10-01-2007 06:38 » 

zubr, ошибаешься: rand() - ф-ия из стандартной библиотеки С.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
zubr
Гость
« Ответ #13 : 10-01-2007 16:43 » 

RXL, согласен, это меня заклинило.
Записан
nikedeforest
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 11-01-2007 10:30 » 

Дело в том, что он обе функции написал с большой буквы. Функции библиотек языка С с маленькойц пишутся. Может это обертки, которые в конечном итоге используют стандартную библиотеку? Я просто Билдер никогда не использовал, если что не так Ага
Записан

ещё один вопрос ...
TGrey[WoLf]
Постоялец

ua
Offline Offline
Пол: Мужской

« Ответ #15 : 14-01-2007 02:08 » 

Ну, а что вы хотите... Я только учусь! Поетому и задаю ети глупые вопросы(глупые для вас, поскольку вы уже знаете, как и что).
Да, действительно random(x) мне больше по душе.
А пишу большими буквами, не потому что незнаю, как писать, а потому что привык так писать.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines