Symbiotica Seed
A seed node that keeps your random numbers in range
- value
ComfyUI's seed widget gives you a number in the billions. Sometimes you don't want a number in the billions - you want an integer in a range: a variant index 1–10, a rotation step, a choice among three things. Symbiotica Seed is a one-job utility that maps any seed value into [min_value, max_value], deterministically.
The "deterministically" is the whole point, and it's the part that separates this from just throwing a random node in. Feed it the same seed, get the same in-range result. Wire the seed from a KSampler or a fixed value, and your variant pick is reproducible in a way a pure random.randint never is.
How it works
Under the hood it's a mod-into-range mapping: lo + (abs(seed) % (hi - lo + 1)). The bounds are sorted internally, so you can't get an empty range by putting min above max. And it treats three sentinel seed values specially - -1 (random), -2 (increment), -3 (decrement) - so those roll a fresh random value in range every run. The node tells ComfyUI to treat those sentinels as "always changed," which is how it knows to re-roll.
The inputs
seed- any integer. Default 1.min_value- the inclusive floor of the output range, default 0.max_value- the inclusive ceiling, default 100.
The output
value- an INT betweenmin_valueandmax_value, inclusive. Wire it into anything that wants a bounded integer: acontrol_after_generate-style pick, a LoRA strength step, a batch index.
Install
Standard pack install - search Symbiotica in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/symbiotica-ai/comfyui-nodes.git symbiotica
pip install -r symbiotica/requirements.txt
Restart after. No API key, no model download - it's arithmetic.
Gotchas
The README mentions "optional auto-increment," and the -2 sentinel is how it's wired - but you don't get auto-increment from this node alone; that's the standard control_after_generate dropdown doing its job on whatever feeds the seed input. If you want each run to step through variants, put this node's output somewhere the increment applies, or drive the seed from a counter. One more: because -1 means "random," you can't ask for -1 as a genuine output value - the range floor is effectively whatever you set, and negative sentinels are reserved. For a bounded-random picker that's usually a fair trade.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 1-18446744073709550000–18446744073709550000 | — |
| min_value | INT | 0-18446744073709550000–18446744073709550000 | Minimum value of the output range (inclusive) |
| max_value | INT | 100-18446744073709550000–18446744073709550000 | Maximum value of the output range (inclusive) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| value | INT | — |