PDA

Просмотр полной версии : Как генерировать рандомные значения


Michael_Komas
13.02.2022, 17:44
Мне нужен генератор рандомных чисел и букв, чтобы получалось +- так: G31HDK, при этом, буквы и цифры стояли в разных местах, а может цифр вообще не быть. Почитал, нигде эту информацию не нашёл. Буквы смог сгенерировать через distr ('A', 'Z') , цифры через rand, а вот как их совместить и заменять - не понял.. Если кто-то знает, скажите пожалуйста.

resolveZ
13.02.2022, 18:20
Почитал, нигде эту информацию не нашёл.


по первой ссылке в гугле

C++:





[CODE]
std
::
string
random_string
(
size_t length
)
{
auto
randchar
=
[
]
(
)
->
char
{
const
char
chars
[
]
=
"0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
;
const
size_t max_index
=
(
sizeof
(
chars
)
-
1
)
;
return
chars
[
rand
(
)
%
max_index
]
;
}
;
std
::
string
str
(
length
,
0
)
;
std
::
generate_n
(
str
.
begin
(
)
,
length
,
randchar
)
;
return
str
;
}
int
main
(
)
{
std
::
cout

Dark_Knight
14.02.2022, 20:16
по первой ссылке в гугле

C++:





[CODE]
std
::
string
random_string
(
size_t length
)
{
auto
randchar
=
[
]
(
)
->
char
{
const
char
chars
[
]
=
"0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
;
const
size_t max_index
=
(
sizeof
(
chars
)
-
1
)
;
return
chars
[
rand
(
)
%
max_index
]
;
}
;
std
::
string
str
(
length
,
0
)
;
std
::
generate_n
(
str
.
begin
(
)
,
length
,
randchar
)
;
return
str
;
}
int
main
(
)
{
std
::
cout

https://forum.antichat.xyz/attachments/27975663/

[/COLOR]


Попробуй вот это. Мб тебе подойдет. Написал на отьебись, но выдает у меня на сайте выше всегда разную строку

C++:





[CODE]
#include
#include
#include
#include
using
namespace
std
;
std
::
string
random_string
(
size_t length
)
{
string chars
=
"0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
;
random_device device
;
mt19937
generator
(
device
(
)
)
;
string str
;
for
(
size_t i
=
0
;
i

distribution
(
0
,
chars
.
size
(
)
-
1
)
;
str
+=
chars
.
at
(
distribution
(
generator
)
)
;
}
return
str
;
}
int
main
(
)
{
std
::
cout

Michael_Komas
17.02.2022, 21:57
Это конечно хорошо, но чет оно выдает одни и те же значения)
[QUOTE="Спойлер"]




Попробуй вот это. Мб тебе подойдет. Написал на отьебись, но выдает у меня на сайте выше всегда разную строку

C++:





[CODE]
#include
#include
#include
#include
using
namespace
std
;
std
::
string
random_string
(
size_t length
)
{
string chars
=
"0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
;
random_device device
;
mt19937
generator
(
device
(
)
)
;
string str
;
for
(
size_t i
=
0
;
i

distribution
(
0
,
chars
.
size
(
)
-
1
)
;
str
+=
chars
.
at
(
distribution
(
generator
)
)
;
}
return
str
;
}
int
main
(
)
{
std
::
cout

Dark_Knight
17.02.2022, 22:38
Спасибо, рандомит - уже хорошо, не знаешь, как его в цикл загнать можно, чтобы раз n-ное количество раз генерировал?


Смотря все от задачи зависит. for пробуй. Я же не знаю, что ты конкретно хочешь сделать

Michael_Komas
18.02.2022, 11:34
Смотря все от задачи зависит. for пробуй. Я же не знаю, что ты конкретно хочешь сделать


Окей, спасибо.