The question doesn't require a specific programming language, which is fine, but I noted that the OP's plot looks like the default style of [tag:matplotlib]. @jbowman has given a useful [tag:r] implementation. Here is a similar [tag:python] implementation in case the OP would like to continue their project in [tag:python].

First we can define a vectorized function `rsin`.

```python
import numpy as np

def rsin(n):
    results = np.zeros(n)
    for i in range(n):
        while True:
            u = np.random.uniform(0, 2*np.pi)
            u2 = np.random.uniform()
            if u2 <= np.abs(np.sin(u)):
                results[i] = u
                break
    return results
```

And then we can plot the results using [tag:matplotlib].

```python
import matplotlib.pyplot as plt

plt.hist(np.cos(rsin(10000)), bins=20)
plt.show()
```

Which produces the following plot:

[![enter image description here][1]][1]


---

@schotti's approach can be given (ignoring some of the style elements) in [tag:python] as follows.

```python
import matplotlib.pyplot as plt

x = np.arccos(np.random.uniform(size=10**5))
y = np.cos(x)

fig, axes = plt.subplots(1,2)

axes[0].hist(x)
axes[1].hist(y)

for axis in axes:
    axis.set_xlabel('x')
    axis.set_ylabel('Frequency')
    axis.tick_params('y', labelrotation=90)

plt.show()
```

[![enter image description here][2]][2]


  [1]: https://i.sstatic.net/m8ylT.png
  [2]: https://i.sstatic.net/IJQ4s.png