• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

losowy ciąg liczb i liter c++ jak zrobić?

VPS Starter Arubacloud
0 głosów
1,124 wizyt
pytanie zadane 19 stycznia 2021 w C i C++ przez Flaven Początkujący (320 p.)

Witam serdecznie

do generowania losowego ciągu liter i liczb używam kodu:

#include <iostream>
#include <random>
#include <algorithm>
#include <chrono>

std::string chars {"abcdefghijklmnopqrstuvwxyz1234567890"};
std::random_device rd;
std::mt19937 generator(rd());

std::string rand_str(int length) {
  std::string output;
  output.reserve(length);

  while(length>0)
  {
      auto randNumb = generator();
      while(randNumb > 33 && length--)
      {
        output.push_back(chars[randNumb%33]);
        randNumb/=33;
      }
  }
  return output;
}

int main() {
  std::string rand_bytes;
      rand_bytes = std::move(rand_str(64));

  std::cout << "This took: " <<rand_bytes<< std::endl;
}

Tylko jest jeden zasadniczy problem.. Jak uruchomię powyższy program to uzyskam tą samą kombinację znaków..

r7ijv3tr1gxnmhjnhfaqwapbr1ggz45nh7uj4ix4i4nosxbnekigtc1uaidcveu2

Co zrobić? Może ktoś zna lepszy kod? Co zrobić aby każda funkcja zwracała inną wartość.. 

1
komentarz 19 stycznia 2021 przez NewEraOfPeace Gaduła (4,790 p.)
Ten move tam jest conajmniej dziwny i niepotrzebny. W C++ istnieją takie mechanizmy jak RVO i NRVO, które optymalizują takie przypadki.
komentarz 19 stycznia 2021 przez Marak123 Stary wyjadacz (11,190 p.)
A nie możesz po prostu zrobić tablicy z alfabetem potem losować liczby od 0 do długości tablicy z alfabetem a potem po prostu do zmiennej string dołączać po kolei wyciągnięty z tablicy z alfabetem znak alfabetu z miejsca które zostało wylosowane za pomocą funkcji rand()
komentarz 19 stycznia 2021 przez NewEraOfPeace Gaduła (4,790 p.)
Przecież on to praktycznie robi
komentarz 19 stycznia 2021 przez Flaven Początkujący (320 p.)
Jest możliwość aby losować np. 18-30 liter losowych oraz 46-32 liczb aby razem utworzyły bardzo losowy ciąg znaków oraz liczb? Ktoś by pomógł w napisaniu aby za bardzo nie obciążał (wykorzystuje to do czegoś bardziej złożonego..).

3 odpowiedzi

0 głosów
odpowiedź 19 stycznia 2021 przez tmar1212 Bywalec (2,600 p.)
–1 głos
odpowiedź 19 stycznia 2021 przez VBService Ekspert (251,210 p.)
edycja 19 stycznia 2021 przez VBService

Boost.Random c++ Libraries

This library provides several pseudo-random number generators
It has a number of quite good (and fast) RNGs.

 

libsodium ( #include <sodium.h> )

libsodium

Sodium is a new, easy-to-use software library for encryption, decryption, signatures, password hashing and more.

 

It is a portable, cross-compilable, installable, packageable fork of NaCl, with a compatible API, and an extended API to improve usability even further.

 

Its goal is to provide all of the core operations needed to build higher-level cryptographic tools.

 

Sodium supports a variety of compilers and operating systems, including Windows (with MingW or Visual Studio, x86 and x64), iOS, Android, as well as Javascript and Webassembly.

komentarz 19 stycznia 2021 przez NewEraOfPeace Gaduła (4,790 p.)
Gdzie tam widzisz rand?
komentarz 19 stycznia 2021 przez VBService Ekspert (251,210 p.)

Tu zobacz, jak odświeżysz stronę, zobaczysz kolejne. wink

Podobne pytania

0 głosów
1 odpowiedź 128 wizyt
+1 głos
2 odpowiedzi 586 wizyt
pytanie zadane 24 kwietnia 2021 w C i C++ przez Malarz Nowicjusz (180 p.)
0 głosów
1 odpowiedź 449 wizyt
pytanie zadane 18 marca 2021 w C i C++ przez NukaNuka56 Obywatel (1,080 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...