powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как сделать чтобы номера не повторялись?
4 сообщений из 4, страница 1 из 1
как сделать чтобы номера не повторялись?
    #36004868
Liosha_nove4ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как сделать чтобы номера не повторялись?

автор
a=0
b=0
c=0
d=0
e=0
FOR i=1 TO 5

DO WHILE (a=0)
a=INT(100*RAND())
ENDDO

DO WHILE (b=0 AND b!=a)
b=INT(100*RAND())
ENDDO

DO WHILE (c=0 AND c!=a AND c!=b)
c=INT(100*RAND())
ENDDO

DO WHILE (d=0 AND d!=a AND d!=b AND d!=c)
d=INT(100*RAND())
ENDDO

DO WHILE (e=0 AND e!=a AND e!=b AND e!=c AND e!=d)
e=INT(100*RAND())
ENDDO

m=alltrim(STR(a))+', '+alltrim(STR(b))+', '+alltrim(str(c))+', '+alltrim(STR(d))+', '+alltrim(STR(e))
thisform.text1.Value=m

ENDFOR
...
Рейтинг: 0 / 0
как сделать чтобы номера не повторялись?
    #36005045
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Liosha_nove4ok,

Ну, раз всего до сотни, я бы так сделал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CLEAR
USE IN SELECT("CurTmp")
CREATE CURSOR CurTmp (No I)
FOR m.i =  1  TO  100 
	INSERT INTO CurTmp VALUES (m.i)
NEXT m.i
SELECT *, RAND() FROM CurTmp ORDER BY  2  INTO ARRAY laTmp

FOR m.i =  1  TO  5 
	?laTmp[m.i,  1 ]
NEXT m.i

Где-то было доказательство, что распределение не совсем равномерное получается. Но, для моих целей, обычно хватает.
...
Рейтинг: 0 / 0
как сделать чтобы номера не повторялись?
    #36005545
Liosha_nove4ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kruchinin Pahan,

спс, разобрался чуток подругому

автор
a=0
b=0
c=0
d=0
e=0
FOR i=1 TO 5

DO WHILE (a=0)
a=INT(35*RAND())
ENDDO

DO WHILE (b=0)
b=INT(35*RAND())
ENDDO

DO WHILE (b=a)
b=INT(35*RAND())
ENDDO

DO WHILE (c=0)
c=INT(35*RAND())
ENDDO

DO WHILE (c=a or c=b)
c=INT(35*RAND())
ENDDO

DO WHILE (d=0)
d=INT(35*RAND())
ENDDO

DO WHILE (d=a or d=b or d=c)
d=INT(35*RAND())
ENDDO

DO WHILE (e=0)
e=INT(35*RAND())
ENDDO

DO WHILE (e=a or e=b or e=c or e=d)
e=INT(35*RAND())
ENDDO

ENDFOR

m=alltrim(STR(a))+', '+alltrim(STR(b))+', '+alltrim(str(c))+', '+alltrim(STR(d))+', '+alltrim(STR(e))
thisform.text1.Value=m
...
Рейтинг: 0 / 0
как сделать чтобы номера не повторялись?
    #36006424
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Liosha_nove4okкак сделать чтобы номера не повторялись?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
STORE  0  TO a,b,c,d,e
DO WHILE a= 0 
a=INT( 100 *RAND())
ENDDO

DO WHILE (b= 0  OR b=a)
b=INT( 100 *RAND())
ENDDO

DO WHILE (c= 0  OR c=a OR c=b)
c=INT( 100 *RAND())
ENDDO

DO WHILE (d= 0  OR d=a OR d=b OR d=c)
d=INT( 100 *RAND())
ENDDO

DO WHILE (e= 0  OR e=a OR e=b OR e=c OR e=d)
e=INT( 100 *RAND())
ENDDO

m=alltrim(STR(a))+', '+alltrim(STR(b))+', '+alltrim(str(c))+', '+alltrim(STR(d))+', '+alltrim(STR(e))
thisform.text1.Value=m
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как сделать чтобы номера не повторялись?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]