An Iranian soldier opened fire on his colleagues, killing three and wounding 12 of them at a military air base in south Tehran, the semi-official Mehr news agency reported on Sunday.
The report said one of the victims was an officer and the other two were regular soldiers. It added that the assailant was killed in a shootout with other soldiers.
All injured soldiers were taken to an Air Force hospital in southeast of the city, the report said.
Mehr's report offered no motive for the attack, which it said took place in Kahrizak, on the southern outskirts of Tehran.
Later Sunday, state TV said the reason of the shooting was either the assailant's "mental problem" ''or accidental" firing. It said the case is still under investigation.
State TV's report put the total death toll at four, including the assailant, and number of wounded commanders at eight.
The reported shooting is the latest to strike Iran.
In July, a soldier opened fire on his comrades, killing three and wounding six at a military base in the town of Abyek, some 62 miles (100 kilometers) west of Tehran. The assailant reportedly shot himself in the incident, but survived and was taken to a nearby hospital.
In September, a soldier killed himself after shooting to death three of his comrades in the south of the country.
Military service of up to 24 months is mandatory for men age 19 and above in Iran.