A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://cplusplus.com/reference/random/discard_block_engine/operator()/ below:

public member function

<random>

std::discard_block_engine::operator()
result_type operator()();

Generate random number

Returns a new random number.

The engine's transition algorithm advances the internal counter by one. If this makes the internal counter surpass the used_block parameter (the third class template parameter, r), it calls discard on its base engine with the difference between its block_size and its used_block as argument, and resets the internal counter.

The generation algorithm simply calls its base engine's operator() and returns its value.

Overall, this function produces the same result as if defined within discard_block_engine as:


1
2
3
4
5
6
result_type operator() {
  // assuming n is the internal counter, and e the base engine object:
  if (n>=used_block) {e.discard(block_size-used_block); n=0;}
  ++n;
  return e();
}

Note: not fully tested, plese report inaccuracies.
Parameters None

Return value A new random number.
result_type is a member type, defined as an alias of the type of the numbers generated by the base engine.

Example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// discard_block_engine::operator()
#include <iostream>
#include <chrono>
#include <random>

int main ()
{
  // obtain a seed from the system clock:
  unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();

  // ranlux24 is a standard instantitation of discard_block_engine:
  std::ranlux24 generator (seed);
  std::cout << "Random value: " << generator() << std::endl;

  return 0;
}

Possible output:


Complexity Determined by the base engine.

See also
discard_block_engine::discard
Advance internal state (public member function)

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4