---
name: "randbuffer"
section: "3bobcat"
platform: "linux"
package: "libbobcat-dev"
version: "4.08.06-1"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/randbuffer"
---

# randbuffer(3bobcat)

std::streambuf generating random numbers

## NAME

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

## SYNOPSIS

**#include \<bobcat/randbuffer\>**\
 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

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

## VIRTUAL MEMBERS

- o

  **int underflow()**:\
   This function is called by *std::istream* objects using **Randbuffer**. 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/randbuffer>
#include <bobcat/a2x>
using namespace std;
using namespace FBB;
int main(int argc, char **argv)
{
    if (argc == 1)
    {
        cout << "expect: nruns min max seed\n";
        return 1;
    }
    Randbuffer rb(A2x{argv[2]}, A2x{argv[3]}, A2x{argv[4]}.to<size_t>());
    istream istr(&rb);
    for (int idx = A2x{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/randbuffer* - defines the class interface

## SEE ALSO

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

## BUGS

None Reported.

## DISTRIBUTION FILES

- o

  *bobcat\_4.08.06-x.dsc*: detached signature;

- o

  *bobcat\_4.08.06-x.tar.gz*: source archive;

- o

  *bobcat\_4.08.06-x\_i386.changes*: change log;

- o

  *libbobcat1\_4.08.06-x\_\*.deb*: debian package holding the libraries;

- o

  *libbobcat1-dev\_4.08.06-x\_\*.deb*: debian package holding the libraries, headers and manual pages;

- o

  *http://sourceforge.net/projects/bobcat*: public archive location;

## 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**).
