1

I have a fixed number $a$. Now using $a$ I need to construct a number $b$ such that $0.99\leq b\leq 1$. Is there any mathematical formulation of such a construction that looks random. The generation of such a number should be deterministic. can somebody hint at any algorithms

Upstart
  • 2,613
  • 2
    If you want it to look random, I'd go for something like $.995 +.005\times \sin \left(e^a\right)$ where you can replace $e^a$ with other functions to get the "look" you want. – lulu Feb 18 '18 at 20:13
  • 6
    .998413267543212 – Dan Piponi Feb 18 '18 at 21:16
  • 2
    What are you using this for? (There's a notable difference here between "this is an internal value in a video game" and "this is part of a cryptography scheme") – Milo Brandt Feb 19 '18 at 01:43

3 Answers3

8

The provided value, $a$, is your seed value.

The algorithm you want is a pseudo-random number generator (PRNG). Note that pseudo-random number generators are explicitly deterministic; they merely appear random.

Depending on how random you need it to look, you may want to use a cryptographically secure PRNG. Such an algorithm, if truly cryptographically secure, should pretty much look random as far as any human-like observer could tell (though its operation may be plain and obvious to super-human observers, e.g. advanced aliens or deities; can't do much there).

Most PRNG's are designed to produce a bit-array (a bunch of $\left\{0,~1\right\}$ values) given a seed. If $a$ is real $\left(a\in\mathbb{R}\right)$, then that bit-array may contain arbitrarily many bits. Typically, the bit-array's defined such that each bit is pseudo-unrelated to the others, such that can be assumed to be mutually independent.

Then, it's just a matter of mapping the bit-array to numeric values. You might do this by interpreting the bit array as a serialization of a binary real $\in{\left[0.9,1\right]}$.

Nat
  • 1,504
6

What about $$0.99+\frac1{100(1+a^2)}?$$

ajotatxe
  • 65,084
6

For example $\,b=0.99 + \dfrac{\sin^2(\lambda a)}{100}\,$, with $\,\lambda \in \mathbb{R}\,$ adjusted for the range of $\,a\,$.

dxiv
  • 76,497
  • What do you mean by range of a – Upstart Feb 18 '18 at 20:25
  • @Upstart You didn't say what values $,a,$ can take. If it's an arbitrary real number then you can leave $,\lambda=1,$ (or, in fact, choose any $,\lambda \ne 0,$). However, if $,a \in [a_{min}, a_{max}],$ then you would probably choose $,\lambda,$ so that the argument of the $,\sin,$ covers many enough periods of $,2 \pi,$ as to make it look "random". – dxiv Feb 18 '18 at 20:30
  • Oh yes i do have a range $a\in [0,255]$ – Upstart Feb 18 '18 at 20:32
  • @Upstart $,\lambda = 1,$ is probably "good enough" for that range. You'll need to try some test runs and evaluate "good enough" for the particular purpose. – dxiv Feb 18 '18 at 20:35
  • With using just $\sin^2$ I would expect some patterns emerging yet. But maybe your sample of $[0, 255]$ is small enough to avoid that. – Alfe Feb 19 '18 at 10:34
  • @Alfe The resulting distribution is not uniform, so there would be a "pattern" in that sense, indeed. But the question leaves it vague what the purpose/application/requirements of the exercise are. – dxiv Feb 19 '18 at 17:13