I thought I would do some experimentation with an algorithm I was thinking about. It is easier for me to work in Excel/VBA so I programmed it there with the output a list of circle commands that can be copy and pasted into AutoCAD.
The Excel file looks like this.

r = circle radius
h = the height of the channel that is to contain the circles
theta min = the minimum angl down from the last circle. The first circle is centered in the channel. An angle of 0 is straight down. 180 is straight up.
theta max = the maximum angle to the next circle
Lmin, Lmax = the minimum and maximum distance to the next circle. the minimum should be at least 2 * r
number of circle = obvious!
The angle and distance to the next circle is calculated and then the result test to see if it is within the channel. If it is not then another try is made.
When the computation is done you can copy and paste column (from cell F2 down) into AutoCAD.
For these values

here is one solution.

Here's another with the same values

Here's another set of values and results.

The program could be modified to meet additional requirements or rewritten in VLISP.
Here is the Excel/VBA code
Sub main()
' Creates randomw circles.
'LRM 3/15/2021
Range("D2:E1000").Select
Selection.ClearContents
Randomize
Range("b2").Select
r = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
h = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
thetamin = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
thetamax = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Lmin = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Lmax = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
n = ActiveCell.Value
Range("d2").Select
x = 0
y = h / 2#
dx = x
dy = y
ActiveCell.Value = x
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = y
ActiveCell.Offset(1, -1).Select
Pi = 3.1415926535
i = 0
While i < n
L = Rnd * (Lmax - Lmin) + Lmin
theta = Rnd * (thetamax - thetamin) + thetamin
x = dx + L * Cos(theta * Pi / 180# - (Pi / 2))
y = dy + L * Sin(theta * Pi / 180# - (Pi / 2))
If i > 1000 Then i = 100
If y > r And y < (h - r) Then
dx = x
ActiveCell.Value = x
ActiveCell.Offset(0, 1).Select
dy = y
ActiveCell.Value = y
ActiveCell.Offset(1, -1).Select
i = i + 1
End If
Wend
End Sub
lee.minardi