---
name: "randbuf"
section: "3bobcat"
platform: "linux"
package: "libbobcat-dev"
version: "6.07.01-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/randbuf"
---

# randbuf(3bobcat)

std::streambuf generating random numbers

## NAME

FBB::RandBuffer - std::streambuf generating random numbers

## SYNOPSIS

**#include \<bobcat/randbuf\>**\
 Linking option: *-lbobcat*

## DESCRIPTION

**FBB:RandBuffer** objects may be used as a **std::streambuf** of *std::istream* objects to allow the extraction of random numbers from the stream.

## NAMESPACE

**FBB**\
 All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the namespace **FBB**.

## INHERITS FROM

std::streambuf

## CONSTRUCTOR

- o

  **RandBuf(int min, int max, size\_t seed = 1)**:\
   This **RandBuf()** constructor initializes the random generator. The seed is used to initialize the random number generator.Random values between *min* and *max* (inclusive) are returned.

Copy and move constructors (and assignment operators) are not available. \`

## VIRTUAL MEMBERS

- o

  **int underflow()**:\
   This function is called by *std::istream* objects using **RandBuf**. It produces the next available random number, separating the random numbers by one blanks space. Random values between *min* and *max* (inclusive) are returned (see the description of the constructor).

## INHERITED MEMBERS

Since the class uses public derivation from **std::streambuf**, all members of this class can be used.

## EXAMPLE

```
#include <iostream>
#include <istream>
#include <bobcat/randbuf>
using namespace std;
using namespace FBB;
int main(int argc, char **argv)
{
    if (argc == 1)
    {
        cout << "expect: nruns min max seed\n";
        return 1;
    }
    RandBuf rb(stoi(argv[2]), stoi(argv[3]), stoul(argv[4]));
    istream istr(&rb);
    for (unsigned idx = stoul(argv[1]); idx--; )
    {
        int c;
        if (!(istr >> c))
        {
            cout << "extraction failed\n";
            break;
        }
        cout << "next: " << c << endl;
    }
    int count = 0;
    while (istr.unget())
        count++;
    cout << "number of successful unget()-calls: " << count << endl;
    istr.clear();
    istr >> count;
    cout << "and read: " << count << endl;
}
```

## FILES

*bobcat/randbuf* - defines the class interface

## SEE ALSO

[**bobcat**(7)](/bobcat/7.md), [**irandstream**(3bobcat)](/irandstream/3bobcat.md), [**randommt**(3bobcat)](/randommt/3bobcat.md), **std::streambuf**

## BUGS

None Reported.

## BOBCAT PROJECT FILES

- o

  *https://fbb-git.gitlab.io/bobcat/*: gitlab project page;

Debian Bobcat project files:

- o

  *libbobcat6*: debian package containing the shared library, changelog and copyright note;

- o

  *libbobcat-dev*: debian package containing the static library, headers, manual pages, and developer info;

## BOBCAT

Bobcat is an acronym of \`Brokken’s Own Base Classes And Templates’.

## COPYRIGHT

This is free software, distributed under the terms of the GNU General Public License (GPL).

## AUTHOR

Frank B. Brokken (**f.b.brokken@rug.nl**).
