---
name: "Example Code: Random Area Distribution"
type: topic
source: https://community.bistudio.com/wiki/Example_Code:_Random_Area_Distribution
revid: 378182
updated: 2026-03-05T16:55:15Z
---

# Example Code: Random Area Distribution

Originally from Commy2's [sqf.ovh post](https://sqf.ovh/sqf%20math/2018/05/05/generate-a-random-position.html).

### Arma 3 (Arma 3 v1.56)

> [!NOTE]
> - `_object getPos [_distance, _direction]` has been introduced in Arma 3 v1.56
> - Gaussian `random [_min, _mid, _max]` has been introduced in Arma 3 v1.56

```sqf
private _center = getPosATL player;                    // disc center definition
private _radius = 50;                                // radius definition

// random radius
private _angle = random 360;                        // angle definition (0..360)
private _distance = random _radius;                    // distance from the center definition (0..radius)
private _position = _center getPos [_distance, _angle];

// random position
private _angle = random 360;                        // angle definition (0..360)
private _randomSquareRoot = sqrt random 1;            // random square-root to obtain a non-linear 0..1 value
private _distance = _radius * _randomSquareRoot;    // distance from the center definition (0..radius)
private _position = _center getPos [_distance, _angle];

// Gaussian normal distribution
private _angleHalf = random 180;
private _randomGauss = random [-1, 0, 1];
private _distance = _radius * _randomGauss;
private _position = _center getPos [_distance, _angleHalf];
```

### Arma 2 (Arma 2 v1.03)

> [!NOTE]
> - [getPosATL](../commands/getPosATL.md) has been introduced in Arma 2 v1.03

```sqf
private ["_center", "_radius", "_angle", "_distance", "_offset", "_position"];    // private definitions
_center = getPosATL player;    // disc center definition
_radius = 50;                // radius definition

// random radius
_angle = random 360;
_distance = random _radius;
_offset = [sin _angle * _distance, cos _angle * _distance, 0];
_position = [_center, _offset] call BIS_fnc_vectorAdd;

// random position
_angle = random 360;
_distance = _radius * sqrt random 1;
_offset = [sin _angle * _distance, cos _angle * _distance, 0];
_position = [_center, _offset] call BIS_fnc_vectorAdd;
```

### Armed Assault / Operation Flashpoint: Resistance (Armed Assault v1.00 Operation Flashpoint: Resistance v1.85)

> [!NOTE]
> - [getPosASL](../commands/getPosASL.md) has been introduced in Armed Assault v1.00

```sqf
private ["_center", "_radius", "_angle", "_distance", "_offset", "_position"];    // private definitions
_center = getPos player;    // disc center definition - getPosASL can be used in Armed Assault
_radius = 50;                // radius definition

// random radius
_angle = random 360;
_distance = random _radius;
_offset = [sin _angle * _distance, cos _angle * _distance];
_position = [(_center select 0) + (_offset select 0), (_center select 1) + (_offset select 1)];

// random position
_angle = random 360;
_distance = _radius * sqrt random 1;
_offset = [sin _angle * _distance, cos _angle * _distance, 0];
_position = [(_center select 0) + (_offset select 0), (_center select 1) + (_offset select 1)];
```

### Operation Flashpoint (Operation Flashpoint v1.00)

> [!NOTE]
> This is an [SQS Syntax](../topics/SQS_Syntax.md) example.

```sqs
; private definitions
private ["_center", "_radius", "_angle", "_distance", "_offset", "_position"]
_center = getPos player;    "disc center definition"
_radius = 50;                "radius definition"

; random radius
_angle = random 360
_distance = random _radius
_offset = [sin _angle * _distance, cos _angle * _distance]
_position = [(_center select 0) + (_offset select 0), (_center select 1) + (_offset select 1)]

; random position
_angle = random 360
_distance = _radius * sqrt random 1
_offset = [sin _angle * _distance, cos _angle * _distance, 0]
_position = [(_center select 0) + (_offset select 0), (_center select 1) + (_offset select 1)]
```

<sub>Source: [BI Community Wiki — Example Code: Random Area Distribution](https://community.bistudio.com/wiki/Example_Code:_Random_Area_Distribution) (revision 378182).</sub>
